Czy ktoś może polecić bibliotekę Python, która umożliwia interaktywną wizualizację wykresów?
W szczególności chcę czegoś takiego jak d3.js, ale python
najlepiej byłoby, gdyby był również 3D.
Spojrzałem na:
- NetworkX - robi tylko
Matplotlib
wykresy, a te wydają się być 2D. Nie widziałem żadnej interaktywności, takiej jak ta, którad3.js
daje, na przykład przeciąganie węzłów. - Graph-tool - wykonuje tylko wykresy 2D i ma bardzo wolne interaktywne wykresy.
python
graph
d3.js
graph-tool
Eiyrioü von Kauyf
źródło
źródło
Odpowiedzi:
Możesz użyć d3py modułu Pythona, który generuje strony xml osadzające skrypt d3.js. Na przykład :
źródło
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. Sprawdziłem najnowsze zatwierdzenie d3py na github (SHA: 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)Plotly obsługuje interaktywne wykresy 2D i 3D. Wykresy są renderowane za pomocą D3.js i można je tworzyć za pomocą interfejsu API Pythona , matplotlib , ggplot dla Python , Seaborn , prettyplotlib i pandas . Możesz powiększać, przesuwać, włączać i wyłączać ślady oraz wyświetlać dane po najechaniu kursorem. Wykresy można osadzać w HTML, aplikacjach, pulpitach nawigacyjnych i notatnikach IPython. Poniżej znajduje się wykres temperatury pokazujący interaktywność. Więcej przykładów można znaleźć w galerii samouczków dotyczących notebooków IPython .
W docs zawiera przykłady obsługiwanych typów fabuły i fragmentów kodu.
Specjalnie na twoje pytanie możesz także tworzyć interaktywne wykresy z NetworkX.
W przypadku drukowania 3D w języku Python można tworzyć wykresy punktowe, liniowe i powierzchniowe 3D, które są podobnie interaktywne. Działki są renderowane za pomocą WebGL. Na przykład, zobacz wykres 3D stawek swapów w Wielkiej Brytanii.
Ujawnienie: Jestem w zespole Plotly.
źródło
Spojrzałeś na Vincenta? Vincent pobiera obiekty danych Pythona i konwertuje je na gramatykę wizualizacji Vega. Vega to narzędzie do wizualizacji wyższego poziomu zbudowane na bazie D3. W porównaniu do D3py repozytorium Vincent zostało zaktualizowane niedawno. Chociaż wszystkie przykłady są statyczne D3.
więcej informacji:
https://github.com/wrobstory/vincent
https://pypi.python.org/pypi/vincent/0.1.6
Wykresy można obejrzeć w Ipythonie, wystarczy dodać ten kod
Lub wyślij do formatu JSON, gdzie możesz wyświetlić wykres wyjściowy JSON w edytorze online Vega ( http://trifacta.github.io/vega/editor/ ) lub wyświetlić je lokalnie na serwerze Python. Więcej informacji na temat oglądania można znaleźć w powyższym linku pypi.
Nie jestem pewien kiedy, ale pakiet Pandas powinien w pewnym momencie mieć integrację z D3. http://pandas.pydata.org/developers.html
Bokeh to biblioteka wizualizacji w języku Python, która obsługuje wizualizację interaktywną. Jego głównym zapleczem wyjściowym jest HTML5 Canvas i używa modelu klient / serwer.
przykłady: http://continuumio.github.io/bokehjs/
źródło
Jeden przepis, którego użyłem (opisany tutaj: Co-Director Network Data Files w GEXF i JSON from OpenCorporates Data via Scraperwiki i networkx ) działa następująco:
NetworkX JSON eksporter ma postać:
Alternatywnie możesz wyeksportować sieć jako plik GEXF XML, a następnie zaimportować tę reprezentację do biblioteki wizualizacji Javascript sigma.js .
źródło
Inną opcją jest bokeh, który właśnie trafił do wersji 0.3.
źródło
Dla tych, którzy zalecili pyd3 , nie jest już w fazie aktywnego rozwoju i wskazuje na vincent . vincent również nie jest już w trakcie aktywnego rozwoju i zaleca stosowanie altair .
Więc jeśli chcesz pythonowego d3, użyj altair.
źródło
Wypróbuj https://altair-viz.github.io/ - następcę d3py i vincent. Zobacz też
źródło
Sprawdź python-nvd3 . Jest to opakowanie Pythona dla nvd3. Wygląda fajniej niż d3.py, a także ma więcej opcji wykresów.
źródło
Sugerowałbym użycie mpld3, który łączy wizualizacje javascript D3js z matplotlib języka Python.
Instalacja i użytkowanie są naprawdę proste i ma kilka fajnych wtyczek i interaktywnych elementów.
http://mpld3.github.io/
źródło
Plotly może zrobić dla Ciebie fajne rzeczy
https://plot.ly/
Tworzy wysoce interaktywne wykresy, które można łatwo osadzić na stronach HTML dla Twojego prywatnego serwera lub witryny internetowej przy użyciu jego off-line API.
Aktualizacja: Jestem pewien co do możliwości kreślenia 3D, dla wykresów 2D jest niesamowita Dzięki
źródło
Możesz także serializować swoje dane, a następnie wizualizować je w D3.js, tak jak to zrobiono tutaj: Użyj Python i Pandas, aby utworzyć diagram sieciowy D3 Force Directed (jest również wyposażony w notebook jupyter !)
Oto sedno. Możesz serializować dane wykresu w tym formacie:
Następnie ładujesz dane za pomocą d3.js:
W przypadku rutyny
drawGraph
odsyłam jednak do linku.źródło
Istnieje interesujący port NetworkX na Javascript, który może robić to, co chcesz. Zobacz http://felix-kling.de/JSNetworkX/
źródło
Widzieć:
Czy istnieje dobra biblioteka interaktywnych wykresów 3D?
Przyjęta odpowiedź sugeruje następujący program, który najwyraźniej ma powiązania z Pythonem: http://ubietylab.net/ubigraph/
Edytować
Nie jestem pewien co do interaktywności NetworkX, ale zdecydowanie możesz tworzyć wykresy 3D. W galerii jest co najmniej jeden przykład:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
I kolejny przykład w „przykładach”. Ten jednak wymaga posiadania Mayavi.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
źródło
Mam dobry przykład automatycznego generowania diagramów sieci D3.js za pomocą Pythona tutaj: http://brandonrose.org/ner2sna
Fajne jest to, że kończysz z automatycznie generowanym kodem HTML i JS i możesz osadzić interaktywny wykres D3 w notatniku z ramką iFrame
źródło
Biblioteka
d3graph
zbuduje z poziomu Pythona wykres d3 sterowany siłą. Możesz "rozbić" sieć na podstawie wagi krawędzi i najechać kursorem na węzły, aby uzyskać więcej informacji. Dwukrotne kliknięcie węzła spowoduje skupienie się na węźle i połączonych z nim krawędziach.Przykład:
Interaktywny przykład z titanic-case można znaleźć tutaj: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases .html
źródło