NetworkXを使用してグラフを作成し、MatplotlibまたはGephiを使用してグラフを表示します
Use Networkx Create Graphs
概要
この記事では、簡単に紹介します。
- NetworkX、それを使用してグラフを作成します
- MatplotlibとGephi、作成したグラフを表示します
私が使用する環境:
- ウインドウズ10
- Python 3.6
- networkx 2.2(Pythonパッケージ)
- matplotlib 3.0.1(Pythonパッケージ)
- Gephi 0.9.2(Java 11.0.1の場合)
グラフを作成する
まず、Pythonパッケージをダウンロードしてインストールします networkx 、次にインポートします。
import netwrokx as nx
次に、いくつかのノードとエッジを持つグラフを作成します。
G = nx.Graph() G.add_node('a') G.add_node('b') # add node one by one G.add_nodes_from([1, 2, 3, ]) # use list to add nodes G.add_edge('a', 'b') # add edge one by one G.add_edges_from([('a', 1), ('a', 2), ('a', 3), ]) # use list to add edges
これで、4つのノードと4つのエッジを持つグラフGができました。 nx.DiGraph()
を使用して有向グラフを作成できます同じ。
Matplotlibで表示する
これで、このグラフを表示できます。最初にpythonパッケージをインポートします。 matplotlib 次のように:
import matplotlib.pyplot as plt
次に、それを描画して表示します。
nx.draw(G, with_labels=True) plt.show()
今私たちが得たものを確認してください:
笑、すごいですね。
グラフを保存する
作成したグラフをファイルに保存することができ、次のような多くの標準グラフ形式を選択できました。 GEXF 、 GraphML 、 ピクルス などをクリックできます ここに グラフのより多くの形式を表示します。
これで、Pythonオブジェクトまたはグラフができました G 、次に、pickleファイルを使用して保存または読み取ります。
nx.write_gpickle(G, 'the_great_graph.pkl') F = nx.read_gpickle('the_great_graph.pkl')
NetworkX 複雑なグラフを操作するための強力なツールであり、多くの関数が含まれています。を参照してください。 ドキュメンテーション あなたが必要なものをもっと学ぶために。
Gephiで表示する
Gephiとは何ですか?
Gephiは、あらゆる種類のグラフとネットワーク向けの主要な視覚化および探索ソフトウェアです。 Gephiはオープンソースで無料です。
Windows、Mac OS X、Linuxで動作します。
場合によっては、数千を超えるノードとエッジを含む大きなグラフが表示され、matplotlibで表示するのが難しいことがありますが、それを視覚化する別のオプションがあります。 どこ 。
Gephiをダウンロードしてインストールする
に移動します オフィシャルサイト ダウンロードするには、インストールは非常に簡単です。[次へ]、[次へ]の順にクリックするだけです。
Javaをダウンロードしてインストールする
Gephiを開くにはJava1.8以降が必要なようです。theJaveにアクセスしてください オフィシャルサイト ダウンロードしてインストールするのも簡単ですが、C:Program FilesJavajdk-11.0.1
のようにインストールパスを覚えておいてください。
次に、Gephiインストールディレクトリに移動し、次に 等 ファイルを見ることができるディレクトリ gephi.conf 、nodepadなどのエディターで開きます。 # jdkhome='...''
で始まる行を見つけて、文字を移動します # 、引用符で囲んだパスを次のようにJavaインストールパスに置き換えます。
jdkhome='C:Program FilesJavajdk-11.0.1'
最後に保存します gephi.conf ファイルを開き、 どこ 。
大きなグラフを扱う
Gephiでは、非常に大きなグラフを開いて、多くのグラフを使用できます。 レイアウトアルゴリズム グラフを表示するには、 ForceAtlas 2 。
以下に例を示します。この有向グラフには、911,714ノードと1,216,998エッジがあります。
参考文献
[1] NetworkXの概要。 (2018年9月19日)。から取得 https://networkx.github.io/documentation/stable/index.html