我想看看最短路径上的边缘是什么,所以我知道它是穿过蓝线还是红线。以下是我大规模实施的示例。我知道它会在这里穿过“红色”线,但是我想在执行nx.shortest_path时看到它。
有看到吗?打击是我的代码
import networkx as nx
import matplotlib.pyplot as plt
G=nx.MultiGraph()
G.add_node("A")
G.add_node("B")
G.add_edge("A","B",weight=10,wire='Red')
G.add_edge("A","B",weight=12,wire='Blue')
G.add_edge("C","B",weight=3)
pos = nx.spring_layout(G)
nx.draw(G, pos)
plt.show()
nx.shortest_path(G,'A','C')
理想情况下,我希望此比例缩放。现在,我有一个实现与具有相同基础图的加权图进行比较,但是所有节点之间只有一条边。我在一条边上交换权重,然后输出在原始图和新图之间更改的所有路径。
我希望能够在节点之间添加多个边,更改权重,并查看从节点B-> C是否使用了蓝线或红线。
答案 0 :(得分:0)
我喜欢这样
h = G.subgraph(nx.shortest_path(G,'A','C'))
h.edges(data=True)
[('B', 'C', {'weight': 3}),
('B', 'A', {'weight': 10, 'wire': 'Red'}),
('B', 'A', {'weight': 12, 'wire': 'Blue'})]
edge_color = nx.get_node_attributes(h,'wire')
nx.draw_networkx(h, edge_color=[d['wire'] for _,_, d in h.edges(data=True)])
plt.show()
我得到“蓝色”,但我想是这样,因为“蓝色”是第二个,“在红色之上”。如果您先添加蓝色,则会得到红色