インタラクティブなグラフの視覚化を行うことができる Python ライブラリを推奨できる人はいますか?
私は特にd3.jsのようなものが欲しいのですがpython
、理想的には3Dでもあります。
私は見ました:
- NetworkX -
Matplotlib
プロットのみを行い、それらは 2D のようです。d3.js
ノードを引っ張るなどのインタラクティブ性は見られませんでした。 - グラフ ツール- 2D プロットのみを行い、インタラクティブなグラフは非常に低速です。
インタラクティブなグラフの視覚化を行うことができる Python ライブラリを推奨できる人はいますか?
私は特にd3.jsのようなものが欲しいのですがpython
、理想的には3Dでもあります。
私は見ました:
Matplotlib
プロットのみを行い、それらは 2D のようです。d3.js
ノードを引っ張るなどのインタラクティブ性は見られませんでした。d3.jsスクリプトを埋め込んだxmlページを生成するpythonモジュールであるd3pyを使用できます。例えば :
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()
Plotly は、インタラクティブな 2D および 3D グラフをサポートしています。グラフは D3.js でレンダリングされ、Python API、matplotlib、Python 用のggplot 、Seaborn、prettyplotlib、およびpandasで作成できます。ズーム、パン、トレースのオンとオフの切り替え、ホバーでのデータの表示を行うことができます。プロットは、HTML、アプリ、ダッシュボード、および IPython ノートブックに埋め込むことができます。以下は、インタラクティブ性を示す温度グラフです。その他の例については、 IPython Notebooks チュートリアルのギャラリーを参照してください。
ドキュメントには、サポートされているプロット タイプとコード スニペットの例が記載されています。
具体的には、NetworkX から
インタラクティブなプロットを作成することもできます。
Python を使用した 3D プロットでは、同様にインタラクティブな 3D 散布図、線図、および表面プロットを作成できます。プロットは WebGL でレンダリングされます。たとえば、英国のスワップ レートの 3D グラフをご覧ください。
開示: 私は Plotly チームに所属しています。
私が使用したレシピの1つ(ここで説明:Scraperwikiおよびnetworkxを介したOpenCorporates DataからのGEXFおよびJSONの共同ディレクターネットワークデータファイル)は次のように実行されます。
networkxJSONエクスポーターは次の形式を取ります。
from networkx.readwrite import json_graph
import json
print json.dumps(json_graph.node_link_data(G))
または、ネットワークをGEXF XMLファイルとしてエクスポートしてから、この表現をsigma.jsJavascript視覚化ライブラリにインポートすることもできます。
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)
別のオプションはbokehで、バージョン 0.3 になりました。
python-nvd3 をチェックしてください。nvd3 の Python ラッパーです。d3.py よりもクールに見え、さらに多くのチャート オプションがあります。
D3js JavaScript ビジュアライゼーションと Python の matplotlib を組み合わせた mpld3 を使用することをお勧めします。
インストールと使用は非常に簡単で、いくつかのクールなプラグインとインタラクティブなものがあります.
ここで行うように、データをシリアル化し、D3.js で視覚化することもできます: Python と Pandas を使用して D3 Force Directed Network Diagram を作成します( jupyter ノートブックも付属しています!)
これが要点です。グラフ データを次の形式でシリアル化します。
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()
次に、d3.js を使用してデータを読み込みます。
d3.json("pcap_export.json", drawGraph);
ただし、ルーチンについてはdrawGraph
、リンクを参照してください。
あなたが望むことをするかもしれないJavascriptへのNetworkXの興味深いポートがあります。http://felix-kling.de/JSNetworkX/を参照してください。