Networkx 重复边
Networkx duplicate edges
如果将同一条边添加到 networkx
边数据结构中两次,那么它会在节点之间有两条边还是只有一条边?例如,spring 布局是否会显示节点与边缘 [(a,b),(a,b),(a,b),(a,b)]
的收敛程度高于 [(a,b),(a,b)]
?如果我想对边缘进行加权,我该怎么做?
您可以很快测试它,但它只会添加一次。边和节点在图结构中表示为字典,只有在它们实际上不存在时才添加它们。
对于已经存在的边,再次添加它们没有效果。
这个回答有点晚了,但是为了完整起见...
您将需要使用 Networkx 的 MultiGraph
来允许两个节点之间存在多个边。
创建图表:
G = nx.MultiGraph()
然后使用 G.add_edge()
添加边。
您可以测试重复的边缘是否重复:
for i in G.nodes:
print(i, G.edges(i))
相反,如果您不想重复边,只需将图形创建为:
G = nx.Graph()
如果将同一条边添加到 networkx
边数据结构中两次,那么它会在节点之间有两条边还是只有一条边?例如,spring 布局是否会显示节点与边缘 [(a,b),(a,b),(a,b),(a,b)]
的收敛程度高于 [(a,b),(a,b)]
?如果我想对边缘进行加权,我该怎么做?
您可以很快测试它,但它只会添加一次。边和节点在图结构中表示为字典,只有在它们实际上不存在时才添加它们。
对于已经存在的边,再次添加它们没有效果。
这个回答有点晚了,但是为了完整起见...
您将需要使用 Networkx 的 MultiGraph
来允许两个节点之间存在多个边。
创建图表:
G = nx.MultiGraph()
然后使用 G.add_edge()
添加边。
您可以测试重复的边缘是否重复:
for i in G.nodes:
print(i, G.edges(i))
相反,如果您不想重复边,只需将图形创建为:
G = nx.Graph()