python - 在绘图上显示两个节点之间的边数
问题描述
我正在从数据框制作网络图,如下所示
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
data = {'source': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'],
'target': ['B', 'B', 'C', 'D', 'E', 'B', 'C', 'E', 'F', 'C']}
df = pd.DataFrame(data=data)
G = nx.from_pandas_edgelist(df, source='source', create_using=nx.Graph(), target='target')
pos = nx.spring_layout(G)
nx.draw_networkx(G, pos, with_labels=False, node_color='#1f0ee3', node_size=150,
edge_color='r', width=1, alpha=0.6, style='dashed',
font_color='k', font_size=15, font_weight=20)
# Offset for node labels
offset = 0.15
pos_labels = {}
keys = pos.keys()
for key in keys:
x, y = pos[key]
pos_labels[key] = (x, y + offset)
nx.draw_networkx_labels(G, pos=pos_labels, fontsize=2)
plt.xlim(-1.25, 1.25)
plt.ylim(-1.25, 1.25)
plt.title('Example')
plt.show()
然而,这并没有表明每个节点之间有多少连接。例如,A->B 实际上有三个边。nx.MultiGraph()
会使某些边缘看起来比其他边缘更厚,但我真正想要的是绘图上显示的两个节点之间的实际边缘数。这样'B'的标签是'B(3)'(或类似的东西)。
我知道这nx.Graph.number_of_edges()
可以告诉我节点之间的边数,但我想以编程方式显示两个节点之间的边数作为绘图的计数。
解决方案
推荐阅读
- r - 使用列表更改列 data.table 中的值
- elasticsearch - 如何在 ECK 上为 kafka 输入配置 Filebeat?
- c# - twoWay 绑定在以 ObservableCollection 作为源的 ToggleButton 中不起作用
- python - 从字典列表创建新字典
- dart - 防止插值字符串中的换行符
- javascript - 如何在不再次调用 api 的情况下提取数据
- javascript - Bootstrap,消除渲染阻塞资源
- python - 从数组 discord.py 中提取额外结果的代码
- openstack - openstack network create 命令给出“Keystone 服务暂时不可用”和“服务器当前不可用”
- docker - 如何使用一些自定义变量使 Gitlab CI/CD 运行容器?