我想从MultiGraph中删除特定的边缘(特定的颜色)。
我该怎么做?
以下代码不起作用。
#!/usr/bin/env python
import matplotlib.pyplot as plt
import networkx as nx
G = nx.MultiGraph()
# the_colored_graph.add_edge(v1, v2, "red")
G.add_edge(1, 2, color="red")
G.add_edge(2, 3, color="red")
G.add_edge(4, 2, color="green")
G.add_edge(2, 4, color="blue")
print (G.edges(data=True))
# G.remove_edge(2, 4, color="green")
#
selected_edge = [(u,v) for u,v,e in G.edges(data=True) if e['color'] == 'green']
print (selected_edge)
G.remove_edge(selected_edge[0][0], selected_edge[0][1])
print (G.edges(data=True))
nx.draw(G)
plt.show()
答案 0 :(得分:2)
构造多图时,为每个边缘分配一个“键”属性(键可以是消除平行边缘歧义的任何东西-例如颜色):
G.add_edge(1, 2, color="red", key='red')
通过指定末端节点和关键点来去除边缘:
G.remove_edge(1, 2, key='red')