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

Python3.11.8中NetworkX绘图报错及布局异常求助

问题解决建议

1. 复用布局位置变量,避免重复生成随机布局

你当前代码中每次调用nx.spring_layout()都会生成全新的随机节点位置,这是导致节点扎堆、边错位的核心原因——节点和边使用了不同的布局坐标。正确做法是先计算一次布局并存入变量,后续绘图全程复用该变量:

import networkx as nx
import matplotlib.pyplot as plt

K33 = nx.complete_bipartite_graph(3, 3)
# 仅计算一次布局,后续绘图共用该位置
pos = nx.spring_layout(K33)
print(pos)

fig, ax = plt.subplots()
nx.draw_networkx(K33, pos=pos, ax=ax)
# 让matplotlib自动适配轴范围,无需手动硬设
ax.autoscale()
plt.show()

2. 排查networkx与matplotlib版本兼容性

nx.draw()报错TypeError: '_AxesStack' object is not callable,大概率是Python升级后,自动更新的matplotlib版本与当前networkx版本不兼容导致的。可以按以下步骤处理:

  • 查看当前依赖版本:
pip show networkx matplotlib
  • 尝试升级networkx到最新稳定版,或降级matplotlib至之前兼容的版本(比如matplotlib 3.7.5):
# 升级networkx
pip install --upgrade networkx
# 或降级matplotlib
pip install matplotlib==3.7.5

3. 拆分绘制节点与边时,确保共用同一布局

如果需要分开调用nx.draw_networkx_nodes()、nx.draw_networkx_edges()等函数,必须保证所有绘图方法传入同一个pos变量:

fig, ax = plt.subplots()
pos = nx.spring_layout(K33)
# 所有绘图逻辑共用同一个pos
nx.draw_networkx_nodes(K33, pos=pos, ax=ax, node_color='#4287f5')
nx.draw_networkx_edges(K33, pos=pos, ax=ax, edge_color='#999999')
nx.draw_networkx_labels(K33, pos=pos, ax=ax)
ax.autoscale()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:30:03