在MultiGraph中,边缘由 (u, v, key)
键入,例如('n1', 'n2', 'key1')
。我想使用(u, v, key): 10
为MultiGraph绘制边缘标签(比如重量,draw_networkx_edge_labels
)。
但是,边缘标签由(u, v)
中的双元组draw_networkx_edge_labels
键入,而不是MultiGraph中的 3元组 (u,v,key)
,导致{{1 }}
PS:ValueError: too many values to unpack
中的参数edge_labels
描述如下:
draw_networkx_edge_labels
字典中的边标签由文字标签的边缘二元组键控 (缺省值=无)。仅绘制字典中键的标签。
答案 0 :(得分:1)
我甚至无法找到如何使用matplotlib绘制多图(因为多边不会显示)。但是,如果导出到点,则可以看到多个边,并且可以在边上用标签属性标记它们。
#!/usr/bin/env python
import networkx as nx
G = nx.MultiGraph()
G.add_node('A')
G.add_node('B')
G.add_edge('A','B', label='foo')
G.add_edge('A','B', label='bar')
nx.write_dot(G,'multi.dot')
请注意,如果查看nx_pylab.py,draw_networkx_edge_labels
的默认行为是使用dict(((u, v), d) for u, v, d in G.edges(data=True))
作为edge_labels属性,因为dictionnary键必须是唯一的,因此多图会失败。因此,如果您想使用matplotlib进行绘图,则可能需要修改draw_networkx_edge_labels
方法。