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

使用networkx绘制网络时仅显示节点无法显示边该如何解决

问题排查与解决方法

1. 先确认边是否成功添加到图中

在添加边的代码后插入以下代码,打印边的数量确认加边逻辑是否正确:

# 打印总边数,若输出为0说明加边逻辑有问题
print("总边数:", len(network.edges()))

如果输出为0,检查你的Excel读取逻辑、索引和列名是否匹配,以及非0判断的条件是否符合你的数据规则。

2. 修正绘图逻辑

如果确认边已经添加成功,按照以下方式修改绘图代码即可显示边:

  • 首先补充matplotlib.pyplot导入语句,你的原代码中缺少该导入会导致相关功能异常
  • 手动指定边的样式参数,避免默认参数导致边不可见
  • 提前生成布局避免绘图时重复计算导致的样式异常

修改后的完整代码如下:

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt # 补充缺失的导入

network=nx.DiGraph()
datacal=pd.read_excel('D:/20110630.xlsx',index_col=0)
for i in range(len(datacal)-1):
    for j in range(i+1,len(datacal)):
        if datacal.iloc[i][j]!=0:
             network.add_edge(datacal.index[i],datacal.columns[j])

# 先确认边数
print("总边数:", len(network.edges()))

# 生成布局,seed固定布局方便复现
pos = nx.spring_layout(network, seed=42)
# 绘图时明确指定边的样式参数
nx.draw_networkx(network,
                 pos=pos,
                 node_size=15,
                 edge_color='gray', # 指定边颜色避免和节点重叠
                 width=0.5, # 调整边宽度
                 arrowsize=3 # 有向图箭头大小,使用无向图可删除该参数
                 )
# 隐藏坐标轴
plt.axis('off')
plt.show()

3. 特殊情况处理

如果节点数量过多导致边重叠被遮挡,可以做如下调整:

  • 调小边的宽度,使用透明度更高的边颜色
  • 更换布局算法,比如nx.circular_layout、nx.kamada_kawai_layout
  • 增加画布尺寸,在绘图前添加plt.figure(figsize=(12,12))调整画布大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:39:03