2014-04-01 132 views
5

我需要在兩個節點之間繪製具有多個邊(具有不同權重)的有向圖。也就是說,我有節點A和B以及長度等於2的邊(A,B)和長度等於3的(B,A)。使用networkx繪製兩個節點之間的多條邊

我已經嘗試使用G = nx.Digraph和G = nx.Multidigraph。當我繪製它時,我只能看到一個邊緣和只有一個標籤。 有什麼辦法可以做到嗎?

+1

見http://stackoverflow.com/questions/15053686/networkx-overlapping-edges-when-visualizing-multigraph和http://stackoverflow.com/questions/14943439/how-to-draw-multigraph-in-networkx-using-matplotlib-or-graphviz獲取信息。 – Aric

回答

7

嘗試以下操作:

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.DiGraph() #or G = nx.MultiDiGraph() 
G.add_node('A') 
G.add_node('B') 
G.add_edge('A', 'B', length = 2) 
G.add_edge('B', 'A', length = 3) 

pos = nx.spring_layout(G) 
nx.draw(G, pos) 
edge_labels=dict([((u,v,),d['length']) 
      for u,v,d in G.edges(data=True)]) 
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, label_pos=0.3, font_size=7) 
plt.show() 

這將返回,在邊緣處顯示兩條邊,長度此圖:

enter image description here

+0

如果它幫助您找到解決方案,您可以將其評爲可接受的答案;) –

+0

這對於可視化和閱讀加權圖形來說可能是最大的敵人。它是無窮的,不可讀的,並且在有向圖中 - 地獄知道哪條邊是哪條邊。 –

相關問題