networkx:从多图中删除具有特定属性的边

时间:2018-07-08 19:27:06

标签: networkx

我想从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()

1 个答案:

答案 0 :(得分:2)

构造多图时,为每个边缘分配一个“键”属性(键可以是消除平行边缘歧义的任何东西-例如颜色):

G.add_edge(1, 2, color="red", key='red')

通过指定末端节点和关键点来去除边缘:

G.remove_edge(1, 2, key='red')