2016-12-01 114 views
-1

我具有邊緣的列表:使用權重來繪製圖形與NetworkX

[[0,0,0], [0,1,1], [0,2,1], [2,3,2], ....[n,m,t]] 

其中索引0是一個節點,在列表中的索引1是一個節點,並且索引2是權重值。

我想要做的是這樣的:

``` 
    0 
/\ 
    1 2 All values of weights of 1 
     \ 
     3 all values of weight of 2 

``` 

方向並不重要,它只是更容易在編輯器垂直畫。 我想用matplotlib導出。

謝謝!

回答

1

您提交的邊緣列表是否代表您的所有數據?如果是這樣,你甚至不需要權重來繪製你想要的圖像(給出你的例子)。

在下面的代碼中,我使用graphviz_layout來計算圖形/樹的佈局。請注意,代碼是爲Python 2編寫的。同樣,我僅使用邊緣信息而不考慮權重。

import networkx as nx 
import matplotlib.pyplot as plt 

data = [[0,0,0], [0,1,1], [0,2,1], [2,3,2]] 
G = nx.Graph() 

for row in data: 
    G.add_edge(row[0], row[1]) 

pos = nx.graphviz_layout(G, prog='dot') # compute tree layout 
nx.draw(G, pos, with_labels=True, node_size=900, node_color='w') # draw tree and show node names 
plt.show() # show image 

輸出:

enter image description here