124

インタラクティブなグラフの視覚化を行うことができる Python ライブラリを推奨できる人はいますか?

私は特にd3.jsのようなものが欲しいのですがpython、理想的には3Dでもあります。

私は見ました:

4

14 に答える 14

76

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()
于 2013-01-05T23:59:44.267 に答える
49

Plotly は、インタラクティブな 2D および 3D グラフをサポートしています。グラフは D3.js でレンダリングされ、Python APImatplotlibPython 用のggplot 、Seabornprettyplotlib、およびpandasで作成できます。ズーム、パン、トレースのオンとオフの切り替え、ホバーでのデータの表示を行うことができます。プロットは、HTML、アプリ、ダッシュボード、および IPython ノートブックに埋め込むことができます。以下は、インタラクティブ性を示す温度グラフです。その他の例については、 IPython Notebooks チュートリアルのギャラリーを参照してください。

ここに画像の説明を入力



ドキュメントには、サポートされているプロット タイプとコード スニペットの例が記載されています。



ここに画像の説明を入力

具体的には、NetworkX から インタラクティブなプロットを作成することもできます。

ここに画像の説明を入力

Python を使用した 3D プロットでは、同様にインタラクティブな 3D 散布図、線図、および表面プロットを作成できます。プロットは WebGL でレンダリングされます。たとえば、英国のスワップ レートの 3D グラフをご覧ください。



ここに画像の説明を入力

開示: 私は Plotly チームに所属しています。

于 2013-11-06T02:13:31.740 に答える
19

私が使用したレシピの1つ(ここで説明:Scraperwikiおよびnetworkxを介したOpenCorporates DataからのGEXFおよびJSONの共同ディレクターネットワークデータファイル)は次のように実行されます。

  • networkxを使用してネットワーク表現を生成する
  • ネットワークをJSONファイルとしてエクスポートする
  • そのJSONをd3.jsにインポートします。(networkxは、 d3.jsがインポートできるツリー表現とグラフ/ネットワーク表現の両方をエクスポートできます)。

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)
于 2013-03-16T23:56:37.850 に答える
15

別のオプションはbokehで、バージョン 0.3 になりました。

于 2013-11-21T18:37:53.117 に答える
8

pyd3を推奨した人は、現在は開発が進んでおらず、vincentを参照してください。vincent も活発な開発を行っておらず、altair の使用を推奨してます。

したがって、pythonic d3 が必要な場合は、altair を使用してください。

于 2016-11-11T14:54:17.517 に答える
5

python-nvd3 をチェックしてください。nvd3 の Python ラッパーです。d3.py よりもクールに見え、さらに多くのチャート オプションがあります。

于 2013-08-23T13:07:30.230 に答える
4

D3js JavaScript ビジュアライゼーションと Python の matplotlib を組み合わせた mpld3 を使用することをお勧めします。

インストールと使用は非常に簡単で、いくつかのクールなプラグインとインタラクティブなものがあります.

http://mpld3.github.io/

于 2015-02-09T11:45:35.030 に答える
2

ここで行うように、データをシリアル化し、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、リンクを参照してください。

于 2018-06-13T09:06:22.550 に答える
1

あなたが望むことをするかもしれないJavascriptへのNetworkXの興味深いポートがあります。http://felix-kling.de/JSNetworkX/を参照してください。

于 2012-10-24T22:31:11.497 に答える