Adakah yang bisa merekomendasikan pustaka Python yang dapat melakukan visualisasi grafik interaktif ?
Saya secara khusus menginginkan sesuatu seperti d3.js tetapi untuk python
dan idealnya itu adalah 3D juga.
Saya telah melihat:
- NetworkX - hanya melakukan
Matplotlib
plot dan yang tampaknya 2D. Saya tidak melihat interaktivitas apa pun, seperti yangd3.js
memberi, seperti menarik node. - graph-tool - ia hanya melakukan plot 2D dan memiliki grafik interaktif yang sangat lambat .
python
graph
d3.js
graph-tool
Eiyrioü von Kauyf
sumber
sumber
Jawaban:
Anda bisa menggunakan d3py modul python yang menghasilkan halaman xml yang menyematkan skrip d3.js. Sebagai contoh :
sumber
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. Saya memeriksa komit terbaru d3py di github (SHA: 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)Plotly mendukung grafik 2D dan 3D interaktif. Grafik dirender dengan D3.js dan dapat dibuat dengan Python API , matplotlib , ggplot untuk Python , Seaborn , prettyplotlib , dan pandas . Anda dapat memperbesar, menggeser, mengaktifkan dan menonaktifkan jejak, dan melihat data saat melayang. Plot dapat disematkan di HTML, aplikasi, dasbor, dan Notebook IPython. Di bawah ini adalah grafik suhu yang menunjukkan interaktivitas. Lihat galeri tutorial Notebook IPython untuk contoh lebih lanjut.
The docs memberikan contoh jenis petak didukung dan potongan kode.
Khusus untuk pertanyaan Anda, Anda juga dapat membuat plot interaktif dari NetworkX.
Untuk plot 3D dengan Python, Anda dapat membuat plot 3D sebar, garis, dan permukaan yang juga interaktif. Plot dirender dengan WebGL. Misalnya, lihat grafik 3D tarif Swap Inggris Raya.
Pengungkapan: Saya berada di tim Plotly.
sumber
Pernahkah Anda melihat Vincent? Vincent mengambil objek data Python dan mengubahnya menjadi tata bahasa visualisasi Vega. Vega adalah alat visualisasi tingkat tinggi yang dibangun di atas D3. Dibandingkan dengan D3py, vincent repo telah diperbarui baru-baru ini. Padahal contoh semua D3 statis.
Info lebih lanjut:
https://github.com/wrobstory/vincent
https://pypi.python.org/pypi/vincent/0.1.6
Grafik bisa dilihat di Ipython, cukup tambahkan kode ini
Atau output ke JSON di mana Anda dapat melihat grafik output JSON di editor online Vega ( http://trifacta.github.io/vega/editor/ ) atau melihatnya di server Python Anda secara lokal. Info lebih lanjut tentang melihat dapat ditemukan di link pypi di atas.
Tidak yakin kapan, tetapi paket Pandas harus memiliki integrasi D3 di beberapa titik. http://pandas.pydata.org/developers.html
Bokeh adalah pustaka visualisasi Python yang mendukung visualisasi interaktif. Backend keluaran utamanya adalah HTML5 Canvas dan menggunakan model klien / server.
contoh: http://continuumio.github.io/bokehjs/
sumber
Satu resep yang telah saya gunakan (dijelaskan di sini: Co-Director Network Data Files di GEXF dan JSON dari OpenCorporates Data melalui Scraperwiki dan networkx ) berjalan sebagai berikut:
The networkx eksportir JSON mengambil bentuk:
Atau, Anda dapat mengekspor jaringan sebagai file XML GEXF dan kemudian mengimpor representasi ini ke pustaka visualisasi Javascript sigma.js .
sumber
Pilihan lainnya adalah bokeh yang baru saja masuk ke versi 0.3.
sumber
Bagi mereka yang merekomendasikan pyd3 , itu tidak lagi dalam pengembangan aktif dan mengarahkan Anda ke vincent . Vincent juga tidak lagi aktif dalam pengembangan dan merekomendasikan penggunaan altair .
Jadi jika Anda menginginkan pythonic d3, gunakan altair.
sumber
Coba https://altair-viz.github.io/ - penerus d3py dan vincent. Lihat juga
sumber
Lihat python-nvd3 . Ini adalah pembungkus python untuk nvd3. Terlihat lebih keren dari d3.py dan juga memiliki lebih banyak opsi bagan.
sumber
Saya akan menyarankan menggunakan mpld3 yang menggabungkan visualisasi javascript D3js dengan matplotlib dari python.
Instalasi dan penggunaannya sangat sederhana dan memiliki beberapa plugin keren dan barang interaktif.
http://mpld3.github.io/
sumber
Plotly dapat melakukan beberapa hal keren untuk Anda
https://plot.ly/
Menghasilkan grafik yang sangat interaktif yang dapat dengan mudah disematkan ke dalam halaman HTML untuk server pribadi atau situs web Anda menggunakan API offline-nya.
Pembaruan: Saya perhatikan yakin tentang kemampuan plot 3D-nya, karena grafik 2D luar biasa Terima kasih
sumber
Anda juga dapat memilih untuk membuat serial data Anda dan kemudian memvisualisasikannya di D3.js, seperti yang dilakukan di sini: Gunakan Python & Pandas untuk Membuat Diagram Jaringan Terarah Gaya D3 (Muncul dengan notebook jupyter juga!)
Inilah intinya. Anda membuat serial data grafik Anda dalam format ini:
Kemudian Anda memuat data dengan d3.js:
Untuk rutinitas,
drawGraph
saya merujuk Anda ke tautannya.sumber
Ada port NetworkX yang menarik ke Javascript yang mungkin melakukan apa yang Anda inginkan. Lihat http://felix-kling.de/JSNetworkX/
sumber
Lihat:
Apakah ada pustaka grafik 3D interaktif yang bagus?
Jawaban yang diterima menyarankan program berikut, yang tampaknya memiliki pengikatan python: http://ubietylab.net/ubigraph/
Edit
Saya tidak yakin tentang interaktivitas NetworkX, tetapi Anda pasti dapat membuat grafik 3D. Setidaknya ada satu contoh di galeri:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
Dan contoh lain di 'contoh'. Yang ini, bagaimanapun, mengharuskan Anda memiliki Mayavi.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
sumber
Saya punya contoh bagus untuk membuat diagram jaringan D3.js secara otomatis menggunakan Python di sini: http://brandonrose.org/ner2sna
Yang keren adalah Anda berakhir dengan HTML dan JS yang dibuat secara otomatis dan dapat menyematkan bagan D3 interaktif di buku catatan dengan IFrame
sumber
Pustaka
d3graph
akan membangun grafik d3 yang diarahkan secara paksa dari dalam python. Anda dapat "merusak" jaringan berdasarkan bobot edge, dan mengarahkan kursor ke node untuk informasi selengkapnya. Klik dua kali pada node akan fokus pada node dan ujung-ujungnya yang terhubung.Contoh:
Contoh interaktif dari kasus-titanic dapat ditemukan di sini: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases .html
sumber