Quelqu'un peut-il recommander une Python pouvant faire une visualisation de graphique interactive ?
Je veux spécifiquement quelque chose comme d3.js mais pour python
et idéalement, ce serait aussi la 3D.
J'ai regardé:
Matplotlib
tracés et ceux-ci semblent être en 2D. Je n'ai vu aucune sorte d'interactivité, comme celle donnée par d3.js
, Telle que l'extraction de nœuds.Vous pouvez utiliser le module d3py a python qui génère des pages XML contenant le script d3.js. Par exemple:
import d3py
import networkx as nx
import logging
logging.basicConfig(level=logging.DEBUG)
G = nx.Graph()
G.add_Edge(1,2)
G.add_Edge(1,3)
G.add_Edge(3,2)
G.add_Edge(3,4)
G.add_Edge(4,2)
# use 'with' if you are writing a script and want to serve this up forever
with d3py.NetworkXFigure(G, width=500, height=500) as p:
p += d3py.ForceLayout()
p.show()
Supporte graphiquement les graphiques 2D et 3D interactifs. Les graphiques sont rendus avec D3.js et peuvent être créés avec un API Python , matplotlib , ggplot pour Python , Seaborn =, prettyplotlib , et pandas . Vous pouvez effectuer un zoom, un panoramique, activer/désactiver les traces et afficher les données en survol. Les tracés peuvent être incorporés dans HTML, des applications, des tableaux de bord et des blocs-notes IPython. Ci-dessous, un graphique de température montrant l'interactivité. Voir la galerie de Notebooks IPythontutoriels pour plus d'exemples.
docs fournit des exemples de types de tracé et d'extraits de code pris en charge.
Spécifiquement à votre question, vous pouvez également créer des tracés interactifs à partir de NetworkX.
Pour le traçage 3D avec Python, vous pouvez créer des diagrammes 3D de dispersion, de ligne et de surface qui sont également interactifs. Les tracés sont rendus avec WebGL. Par exemple, voir graphique 3D des taux de swap britanniques.
Divulgation: Je fais partie de l'équipe Plotly.
Avez-vous regardé vincent? Vincent prend des objets de données Python et les convertit en grammaire de visualisation Vega. Vega est un outil de visualisation de niveau supérieur construit au-dessus de D3. Par rapport à D3py, le référentiel vincent a été mis à jour plus récemment. Bien que les exemples soient tous statiques D3.
plus d'informations:
Les graphiques peuvent être visualisés en Ipython, ajoutez simplement ce code
vincent.core.initialize_notebook()
Vous pouvez également afficher le graphique de sortie JSON dans l'éditeur en ligne de Vega ( http://trifacta.github.io/vega/editor/ ) ou le visualiser sur votre Python localement sur le serveur.
Je ne sais pas quand, mais le paquet Pandas devrait avoir une intégration D3 à un moment donné. http://pandas.pydata.org/developers.html
Bokeh est une bibliothèque de visualisation Python) qui prend en charge la visualisation interactive. Son principal moteur de sortie est HTML5 Canvas et utilise un modèle client/serveur.
exemples: http://continuumio.github.io/bokehjs/
Une recette que j'ai utilisée (décrite ici: les fichiers de données de réseau co-directeur en GEXF et JSON d'OpenCorporates Data via Scraperwiki et networkx ) est la suivante:
Le networkx exportateur JSON se présente sous la forme:
from networkx.readwrite import json_graph
import json
print json.dumps(json_graph.node_link_data(G))
Sinon, vous pouvez exporter le résea en tant que fichier XML [~ # ~] gexf [~ # ~] , puis importer ce représentation dans la sigma.js bibliothèque de visualisation Javascript.
from xml.etree.cElementTree import tostring
writer=gf.GEXFWriter(encoding='utf-8',prettyprint=True,version='1.1draft')
writer.add_graph(G)
print tostring(writer.xml)
Une autre option est bokeh qui vient de passer à la version 0.3.
Départ python-nvd . Il s'agit d'un python wrapper pour nvd3. Il semble plus cool que d3.py et offre également plus d'options graphiques.
Je suggérerais d'utiliser mpld3 qui combine les visualisations javascript de D3js avec matplotlib de python.
L'installation et l'utilisation sont vraiment simples et comportent des plugins et des outils interactifs.
Vous pouvez également choisir de sérialiser vos données, puis de les visualiser dans D3.js, comme indiqué ici: Utilisez Python & Pandas pour créer un diagramme de réseau dirigé forcé D3. (Il est accompagné d'un cahier jupyter également!)
Voici le Gist. Vous sérialisez vos données graphiques dans ce format:
import json
json_data = {
"nodes":[
{"name":"Myriel","group":1},
{"name":"Napoleon","group":1},
{"name":"Mlle.Baptistine","group":1},
{"name":"Mme.Magloire","group":1},
{"name":"CountessdeLo","group":1},
],
"links":[
{"source":1,"target":0,"value":1},
{"source":2,"target":0,"value":8},
{"source":3,"target":0,"value":10},
{"source":3,"target":2,"value":6},
{"source":4,"target":0,"value":1},
{"source":5,"target":0,"value":1},
]
}
filename_out = 'graph_data.json'
json_out = open(filename_out,'w')
json_out.write(json_data)
json_out.close()
Ensuite, vous chargez les données avec d3.js:
d3.json("pcap_export.json", drawGraph);
Pour la routine drawGraph
je vous renvoie cependant au lien.
Plotly peut faire des trucs sympas pour vous
Produit des graphiques hautement interactifs que vous pouvez facilement intégrer aux pages HTML de votre serveur privé ou de votre site Web à l’aide de son API hors ligne.
Mise à jour: Je suis sûr que ses capacités de traçage 3D sont géniales, car les graphiques 2D sont géniaux Merci
Essayez https://altair-viz.github.io/ - le successeur de d3py et vincent. Voir également
Il existe un portage intéressant de NetworkX sur Javascript qui pourrait faire ce que vous voulez. Voir http://felix-kling.de/JSNetworkX/
Voir:
Existe-t-il une bonne bibliothèque de graphes 3D interactifs?
La réponse acceptée suggère le programme suivant, qui a apparemment python bindings: http://ubietylab.net/ubigraph/
Modifier
Je ne suis pas sûr de l'interactivité de NetworkX, mais vous pouvez certainement créer des graphiques 3D. Il y a au moins un exemple dans la galerie:
http://networkx.lanl.gov/examples/drawing/Edge_colormap.html
Et un autre exemple dans les "exemples". Celui-ci, cependant, nécessite que vous ayez Mayavi.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
J'ai un bon exemple de génération automatique de diagrammes de réseau D3.js avec Python ici: http://brandonrose.org/ner2sna
La bonne chose est que vous vous retrouvez avec HTML et JS générés automatiquement et pouvez incorporer le graphique D3 interactif dans un cahier avec un IFrame