如何解决使用 networkx 具有特定属性的有向图
我正在使用具有此数据样本的 networkx 构建网络
Node1 Target1 Edge_Attr Label
0 A C 59.5 0
1 A F 47.0 0
2 A X 43.8 0
3 A D 39.4 0
4 A M 39.3 0
5 B C 27.5 1
6 B F 15.2 1
7 B H 11.4 1
8 C N 10.8 1
9 C M 7.2 1
代码是
G = nx.from_pandas_edgelist(df,source='Node1',target='Target1',edge_attr='Edge_Attr')
degrees=[]
for x in G.nodes():
deg=G.degree[x]
degrees.append(deg)
collist = df.melt('Label').dropna()
degrees=[G.degree[node] for node in collist['value']]
nx.draw_networkx_nodes(G,pos,nodelist=collist['value'],node_size = degrees,node_color=collist['Label'])
nx.draw_networkx_edges(G,width = [i['Weight'] for i in dict(G.edges).values()])
预期的输出是
- 边缘从
Node1
到Target1
的有向网络 - 节点的大小由其入度给出
- 由
Edge_Attr
给出的边缘属性(大小?) - 节点的颜色由
Label
给出(如果为 1,则为红色,否则为绿色)
当我尝试绘制网络时,收到此错误消息:
---> 21 degrees=[G.degree[node] for node in collist['value']]
22
<ipython-input-15-ffc9ad2a87a1> in <listcomp>(.0)
---> 21 degrees=[G.degree[node] for node in collist['value']]
22
~/opt/anaconda3/lib/python3.8/site-packages/networkx/classes/reportviews.py in __getitem__(self,n)
445 def __getitem__(self,n):
446 weight = self._weight
--> 447 nbrs = self._succ[n]
448 if weight is None:
449 return len(nbrs) + (n in nbrs)
KeyError: 0
<figure size 2880x1440 with 0 Axes>
有谁知道如何修复错误/获得预期的输出?我一直在为 Label 字段使用 collist,但我想我以错误的方式使用它(或者只是在我的情况下不需要)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。