问题描述
我正在使用具有此数据样本的 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 (将#修改为@)