Kann jemand eine Python-Bibliothek empfehlen, die eine interaktive Grafikvisualisierung ermöglicht?
Ich möchte speziell so etwas wie d3.js, aber für python
und im Idealfall wäre es auch 3D.
Ich habe angeschaut:
- NetworkX - es werden nur
Matplotlib
Diagramme erstellt, und diese scheinen 2D zu sein. Ich habe keine Art von Interaktivität gesehen, wie eine, died3.js
gibt, wie das Herumziehen von Knoten. - Grafik-Tool - Es erstellt nur 2D-Diagramme und verfügt über sehr langsame interaktive Diagramme.
python
graph
d3.js
graph-tool
Eiyrioü von Kauyf
quelle
quelle
Antworten:
Sie können d3py verwenden, ein Python-Modul, das XML-Seiten generiert, in die das Skript d3.js eingebettet ist. Zum Beispiel :
quelle
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. Ich habe das letzte Commit von d3py bei github (SHA: 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)Plotly unterstützt interaktive 2D- und 3D-Grafiken. Diagramme werden mit D3.js gerendert und können mit einer Python-API , Matplotlib , ggplot für Python , Seaborn , Prettyplotlib und Pandas erstellt werden . Sie können Spuren zoomen, schwenken, ein- und ausschalten und Daten auf dem Hover anzeigen. Diagramme können in HTML, Apps, Dashboards und IPython-Notizbücher eingebettet werden. Unten sehen Sie ein Temperaturdiagramm, das die Interaktivität zeigt. Weitere Beispiele finden Sie in der Galerie der IPython Notebooks- Tutorials .
Das Dokument enthält Beispiele für unterstützte Diagrammtypen und Codeausschnitte.
Speziell für Ihre Frage können Sie auch interaktive Diagramme aus NetworkX erstellen.
Für 3D-Diagramme mit Python können Sie 3D-Streu-, Linien- und Oberflächendiagramme erstellen, die ähnlich interaktiv sind. Diagramme werden mit WebGL gerendert. Sehen Sie sich beispielsweise ein 3D-Diagramm der britischen Swap-Raten an.
Offenlegung: Ich bin im Plotly-Team.
quelle
Hast du Vincent angeschaut? Vincent nimmt Python-Datenobjekte und konvertiert sie in die Vega-Visualisierungsgrammatik. Vega ist ein übergeordnetes Visualisierungstool, das auf D3 basiert. Im Vergleich zu D3py wurde das Vincent Repo kürzlich aktualisiert. Obwohl die Beispiele alle statisch D3 sind.
Mehr Info:
https://github.com/wrobstory/vincent
https://pypi.python.org/pypi/vincent/0.1.6
Die Grafiken können in Ipython angezeigt werden. Fügen Sie einfach diesen Code hinzu
Oder geben Sie eine Ausgabe an JSON aus, wo Sie das JSON-Ausgabediagramm im Vega-Online-Editor ( http://trifacta.github.io/vega/editor/ ) anzeigen oder lokal auf Ihrem Python-Server anzeigen können. Weitere Informationen zum Anzeigen finden Sie unter dem obigen Pypi-Link.
Ich bin mir nicht sicher wann, aber das Pandas-Paket sollte irgendwann eine D3-Integration haben. http://pandas.pydata.org/developers.html
Bokeh ist eine Python-Visualisierungsbibliothek, die interaktive Visualisierung unterstützt. Das primäre Ausgabe-Backend ist HTML5 Canvas und verwendet das Client / Server-Modell.
Beispiele: http://continuumio.github.io/bokehjs/
quelle
Ein Rezept, das ich verwendet habe (hier beschrieben: Co-Director-Netzwerkdatendateien in GEXF und JSON von OpenCorporates Data über Scraperwiki und networkx ), lautet wie folgt:
Der JSON-Exporter von networkx hat folgende Form:
Alternativ können Sie das Netzwerk als GEXF- XML-Datei exportieren und diese Darstellung dann in die Javascript-Visualisierungsbibliothek von sigma.js importieren .
quelle
Eine weitere Option ist Bokeh, das gerade auf Version 0.3 umgestellt wurde.
quelle
Für diejenigen, die pyd3 empfohlen haben , befindet es sich nicht mehr in der aktiven Entwicklung und weist Sie auf vincent hin . Vincent befindet sich ebenfalls nicht mehr in der aktiven Entwicklung und empfiehlt die Verwendung von Altair .
Wenn Sie also eine Python-D3 möchten, verwenden Sie Altair.
quelle
Versuchen Sie es mit https://altair-viz.github.io/ - dem Nachfolger von d3py und vincent. Siehe auch
quelle
Schauen Sie sich python-nvd3 an . Es ist ein Python-Wrapper für nvd3. Sieht cooler aus als d3.py und hat auch mehr Diagrammoptionen.
quelle
Ich würde vorschlagen, mpld3 zu verwenden, das D3js Javascript-Visualisierungen mit Matplotlib von Python kombiniert.
Die Installation und Verwendung ist sehr einfach und es gibt einige coole Plugins und interaktive Dinge.
http://mpld3.github.io/
quelle
Plotly kann ein paar coole Sachen für dich machen
https://plot.ly/
Erstellt hochgradig interaktive Diagramme, die mithilfe der Offline-API problemlos in die HTML-Seiten Ihres privaten Servers oder Ihrer Website eingebettet werden können.
Update: Ich bin mir sicher, dass die 3D-Plotfunktionen für 2D-Diagramme fantastisch sind. Danke
quelle
Sie können Ihre Daten auch serialisieren und dann in D3.js visualisieren, wie hier beschrieben: Verwenden Sie Python und Pandas, um ein erzwungenes D3-Netzwerkdiagramm zu erstellen (es wird auch mit einem Jupyter-Notizbuch geliefert !).
Hier ist das Wesentliche. Sie serialisieren Ihre Grafikdaten in diesem Format:
Dann laden Sie die Daten mit d3.js:
Für die Routine
drawGraph
verweise ich Sie jedoch auf den Link.quelle
Es gibt eine interessante Portierung von NetworkX nach Javascript, die möglicherweise das tut, was Sie wollen. Siehe http://felix-kling.de/JSNetworkX/
quelle
Sehen:
Gibt es da draußen eine gute interaktive 3D-Grafikbibliothek?
Die akzeptierte Antwort schlägt das folgende Programm vor, das anscheinend Python-Bindungen aufweist: http://ubietylab.net/ubigraph/
Bearbeiten
Ich bin mir über die Interaktivität von NetworkX nicht sicher, aber Sie können definitiv 3D-Diagramme erstellen. In der Galerie gibt es mindestens ein Beispiel:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
Und noch ein Beispiel in den "Beispielen". Dies setzt jedoch voraus, dass Sie Mayavi haben.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
quelle
Ich habe hier ein gutes Beispiel für die automatische Generierung von D3.js-Netzwerkdiagrammen mit Python: http://brandonrose.org/ner2sna
Das Coole ist, dass Sie am Ende automatisch generiertes HTML und JS haben und das interaktive D3-Diagramm mit einem IFrame in ein Notizbuch einbetten können
quelle
Die Bibliothek erstellt
d3graph
aus Python einen erzwungenen d3-Graphen. Sie können das Netzwerk basierend auf dem Kantengewicht "unterbrechen" und mit der Maus über die Knoten fahren, um weitere Informationen zu erhalten. Ein Doppelklick auf einen Knoten konzentriert sich auf den Knoten und seine verbundenen Kanten.Beispiel:
Ein interaktives Beispiel aus dem Titanic-Fall finden Sie hier: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases .html
quelle