微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法显示networkx中节点和边之间的连接数

如何解决有没有办法显示networkx中节点和边之间的连接数

我在 networkx 中有双向图,我想显示两个节点之间有多少连接。 如图所示,我想添加两个数字(或至少一个)来显示两个节点之间有多少连接。图比这更复杂,因为这是示例问题。

Link to image

更新:

 df = pd.DataFrame({'from': fromlist,'to': tolist})
 G = nx.from_pandas_edgelist(df,'from','to',create_using=nx.DiGraph())
 if.self.ui.radioButtonCircular.isChecked():
      nx.draw(G,with_labels=True,node_size=5500,node_color=[mapper.to_rgba(i)
      for i in d.values()],font_size=7,node_shape="s",alpha=0.7,arrows=True,pos=nx.circular_layout(G))
 plt.title("Directed")
 plt.show()

这上面有很多分析,但是在我的fromlist和tolist中是有联系的。像这样:

fromlist: A,A,B,C
tolist:   B,C,A

现在我想让它在双向图中显示 A 与 B 连接 3 次,B 与 A 连接 2 次,C 与 A 连接一次,但 A 与 C 也连接一次, ... 这在 networkx 中可能吗?

解决方法

有向图不允许 https://networkx.org/documentation/stable/reference/classes/digraph.html 中所述的平行边。
所以如果你做 print(G['A']['B']) 只显示一个边缘。

也许您可以尝试为边分配一个属性,例如:

for from_node,to_node in zip(from_list,to_list):
    if G.has_edge(from_node,to_node):
        G[from_node][to_node]['count'] += 1
    else:
        G.add_edge(from_node,to_node,count = 1)

然后就可以显示边属性如Labeling edges in networkx

如果您的图表非常大并且 for 循环花费太多时间,您可以这样做:

df['count'] = 1
df = df.groupby(['from','to']).sum().reset_index()
G = nx.from_pandas_edgelist(df,'from','to',['count'],create_using=nx.DiGraph())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。