40

ソーシャル ネットワークを定義し、分析して描画する必要があります。私はそれを手で描くことも、手で分析する (さまざまな指標を計算する) こともできました。しかし、車輪の再発明はしたくありません。

私はmatplotlibを使用しようとしましたが、インタラクティブに使用する必要があり、数行でデータをロードする方法を伝えてから、グラフをSVGとしてレンダリングするrender関数を呼び出します。

上記の方法でソーシャル ネットワークを視覚化するにはどうすればよいですか?

4

4 に答える 4

19

Networkx と Gephi について言及している回答は 3 つありますが、graph-toolについて言及した人はいません。主な違いは、アルゴリズムが C++ で実装されているため、Networkx などと比較してパフォーマンスが向上することです。

また、可視化もカバーしています。サイトから:

さまざまなアルゴリズムと出力形式 (画面を含む) を使用して、便利にグラフを描画します。Graph-tool には独自のレイアウト アルゴリズムと、cairo と GTK+ に基づく多目的でインタラクティブな描画ルーチンがありますが、優れた graphviz パッケージへの非常に快適なインターフェイスとしても機能します。

これはドキュメントからのきちんとした例です(他にもたくさんあります):

政治ブログ ネットワークのブロック パーティション

(政治ブログ ネットワークのブロック パーティション)。

そして、そのコード:

>>> g = gt.collection.data["polblogs"]
>>> g = gt.GraphView(g, vfilt=gt.label_largest_component(gt.GraphView(g, directed=False)))
>>> state = gt.BlockState(g, B=g.num_vertices(), deg_corr=True)
>>> state = gt.multilevel_minimize(state, B=2)
>>> gt.graph_draw(g, pos=g.vp["pos"], vertex_fill_color=state.get_blocks(), output="polblogs_agg.pdf")
<...>

(注: この例では、各ノードの位置が事前に決定されているため、レイアウト アルゴリズムを実行する必要はありません)

同じデータを使用した別の例を次に示します (結果は驚くべきものです): http://ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good/

于 2014-12-21T17:33:18.433 に答える
3

別の方法はCytoscapeです。gml ファイルでも使用できます。

psychemedia が言ったように、Networkx を使用してグラフをプロットし、gml ファイルにエクスポートできます。

nx.write_graphml(G,'my_file.gml')

その後、Cytoscape で From Network File をクリックし、gml ファイルを選択します。そこで、スタイルを変更することもできます。

于 2014-08-11T14:24:11.740 に答える