You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NetworkX从Pandas DataFrame构建有向图无法显示边权重怎么办?

解决NetworkX有向图边权重不显示的问题

你代码里的核心问题是用错了函数:nx.draw_networkx_labels是用来设置节点标签的,要显示边的权重,得用专门的nx.draw_networkx_edge_labels函数。

直接给你修正后的完整代码,关键改动已经标出来了:

import networkx as nx
import matplotlib.pyplot as plt

# 假设你的df已经定义完成
G = nx.from_pandas_edgelist(df, source='A',
                            target='B',
                            create_using=nx.DiGraph(),
                            edge_attr='Weight')  # 这里直接指定edge_attr,权重会自动作为边属性加入
pos = nx.circular_layout(G, scale=1)

# 绘制基础图结构(节点、边、节点标签)
nx.draw(G, pos, with_labels=True, node_size=300, edge_color='black')

# 绘制边权重——这一步是核心修正
nx.draw_networkx_edge_labels(
    G, 
    pos, 
    edge_labels=nx.get_edge_attributes(G, 'Weight'),
    label_pos=0.5,  # 控制标签在边的中间位置(0是起点,1是终点)
    font_size=8     # 多边场景下缩小字体避免重叠
)

plt.show()

额外补充两个实用小技巧:

  • 如果多个同方向的边标签重叠,可以调整label_pos参数(比如设为0.4或0.6),让标签错开位置
  • 也可以给标签加半透明背景,提升可读性:bbox=dict(facecolor='white', edgecolor='none', alpha=0.7)

内容的提问来源于stack exchange,提问作者kenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:35:28