2015-02-06 115 views
8

我正在python中使用networkx包進行一些圖論。我想 將圖形邊緣的權重添加到繪圖輸出。我怎樣才能做到這一點?添加邊緣權重以繪製網絡中的輸出x

例如我將如何修改以下代碼以獲得所需的輸出?

import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.Graph() 
i=1 
G.add_node(i,pos=(i,i)) 
G.add_node(2,pos=(2,2)) 
G.add_node(3,pos=(1,0)) 
G.add_edge(1,2,weight=0.5) 
G.add_edge(1,3,weight=9.8) 
pos=nx.get_node_attributes(G,'pos') 
nx.draw(G,pos) 
plt.savefig("path.png") 

我想0.5和9.8出現在他們在圖中引用的邊緣。

回答

10

你必須打電話nx.draw_networkx_edge_labels(),這將讓你......畫networkX邊緣標籤:)

編輯:全面修改的源

#!/usr/bin/python 
import networkx as nx 
import matplotlib.pyplot as plt 

G=nx.Graph() 
i=1 
G.add_node(i,pos=(i,i)) 
G.add_node(2,pos=(2,2)) 
G.add_node(3,pos=(1,0)) 
G.add_edge(1,2,weight=0.5) 
G.add_edge(1,3,weight=9.8) 
pos=nx.get_node_attributes(G,'pos') 
nx.draw(G,pos) 
labels = nx.get_edge_attributes(G,'weight') 
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels) 
plt.savefig(<wherever>) 
+0

@Joel:添加了完整的源;我不僅鏈接到文檔,我實際上提出了一種方法:) – 2015-02-07 10:04:37

+0

@Joel:哦,我不知道那個:) – 2015-02-07 10:18:03

+0

我繼續前進,並把該編輯。我認爲代碼是關於如何清潔如現在所見。不知道爲什麼我之前有一個錯誤(實際上我認爲我給了我一個錯誤的代碼現在乾淨地運行...)。 – Joel 2015-02-07 11:39:59