2017-06-22 261 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() 

當運行連續兩次的代碼的簡單代碼(包括4個節點的),則如圖中的圖像爲相同的代碼的輸出(該圖的取向是隨機的)

image 1image 2

是否有可能產生的田塊具有相同/固定的定向輸出?

回答

3

默認使用彈簧佈局繪製圖形。這可以在每次繪製時都有一個新的方向。

還有其他佈局可用。

enter image description here

使用例如nx.draw_circularnx.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

謝謝!硬編碼位置的方法是相當有幫助的。 –