我需要在兩個節點之間繪製具有多個邊(具有不同權重)的有向圖。也就是說,我有節點A和B以及長度等於2的邊(A,B)和長度等於3的(B,A)。使用networkx繪製兩個節點之間的多條邊
我已經嘗試使用G = nx.Digraph和G = nx.Multidigraph。當我繪製它時,我只能看到一個邊緣和只有一個標籤。 有什麼辦法可以做到嗎?
我需要在兩個節點之間繪製具有多個邊(具有不同權重)的有向圖。也就是說,我有節點A和B以及長度等於2的邊(A,B)和長度等於3的(B,A)。使用networkx繪製兩個節點之間的多條邊
我已經嘗試使用G = nx.Digraph和G = nx.Multidigraph。當我繪製它時,我只能看到一個邊緣和只有一個標籤。 有什麼辦法可以做到嗎?
嘗試以下操作:
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()
這將返回,在邊緣處顯示兩條邊,長度此圖:
如果它幫助您找到解決方案,您可以將其評爲可接受的答案;) –
這對於可視化和閱讀加權圖形來說可能是最大的敵人。它是無窮的,不可讀的,並且在有向圖中 - 地獄知道哪條邊是哪條邊。 –
見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