2017-06-22 16 views
2

最近、pythonでnetworkxライブラリを使用してグラフプロットを生成して視覚化し始めました。PythonでNetworkxグラフをプロットする

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.Graph() 
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ]) 
nx.draw(G) 
plt.show() 

に示すように、私は2回連続のコードを実行すると、同じコードの出力は次のように(プロットの向きがランダムである画像に示されている単純なコード(4つのノードを含む)を開始しました)

image 1image 2

同じ/固定向きでプロットの出力を生成することが可能ですか?

答えて

3

デフォルトでは、グラフを描画するためにスプリングレイアウトが使用されます。これは描画されるたびに新しい方向を持つことができます。

他にもレイアウトがあります。例えば使用

enter image description here

nx.draw_circularまたはnx.draw_spectralは常に同じレイアウトになります。

nodenumberを位置にマップする辞書を使用して、ノードの位置を定義することもできます。

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.Graph() 
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ]) 
pos = { 1: (20, 30), 2: (40, 30), 3: (30, 10),4: (0, 40)} 

nx.draw_networkx(G, pos=pos) 

plt.show() 

enter image description here

+0

ありがとうございます!ハードコード位置のメソッドは非常に便利です。 –