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

Is there a way to show number of connection between nodes and edges in 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, A, B, B, A, C
tolist:   B, C, B, A, A, B, A

现在我想让它在双向图中显示 A 与 B 连接 3 次,B 与 A 连接 2 次,C 与 A 连接一次,但 A 与 C 也连接 1 次时间,... 这在 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)

然后你可以显示边缘属性,如图

如果你的图表非常大并且 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())