如何解决从pandas数据框networkx /显示pos标签时出错,显示边缘标签时出错不知道是哪个
我的数据框有3列,即源,目标和值。看起来像这样
源目标值 博巴菲特C-3PO 4 BOBA FETT CHEWBACCA 3 BOBA FETT达斯·维达8 BOBA FETT HAN 7
G = nx.from_pandas_edgelist(links,source ='source',target ='target',edge_attr ='value')
我用它来添加我的边缘列表
nx.draw_networkx_edge_labels(G,pos = nx.Graph(G),edge_labels = {(u,v):w for u,v,w in G.edges(data ='value')})
我试图这样做以显示边缘标签。我希望将“值”显示为边缘标签 它给出了这个错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-d49aadc4a5f6> in <module>
1 ##try edge list here
----> 2 nx.draw_networkx_edge_labels(G,pos=nx.Graph(G),edge_labels={(u,v):w for u,v,w in G.edges(data='value')})
3
~\Anaconda3\lib\site-packages\networkx\drawing\nx_pylab.py in draw_networkx_edge_labels(G,pos,edge_labels,label_pos,font_size,font_color,font_family,font_weight,alpha,bbox,ax,rotate,**kwds)
939 text_items = {}
940 for (n1,n2),label in labels.items():
--> 941 (x1,y1) = pos[n1]
942 (x2,y2) = pos[n2]
943 (x,y) = (x1 * label_pos + x2 * (1.0 - label_pos),ValueError: too many values to unpack (expected 2)
解决方法
您提供给pos
的值应该是节点位置的字典,而不是实际的图形(networkx中有很多布局函数可以用来构建它。类似的事情应该可以解决它。
gpos = nx.circular_layout(G) # make a variable containing not positions
nx.draw_networkx(G,pos=gpos) # draw the graph
nx.draw_networkx_edge_labels(G,pos=gpos,edge_labels={(u,v):w for u,v,w in G.edges(data='value')}) # add edge labels
如果您多次调用以绘制图的其余部分,则最好制作一个包含节点位置的变量,并将相同的变量传递给上述函数的pos参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。