使用NetworkX绘图时出现'_AxesStack' object is not callable错误求助
无权重有向无环图矩阵转换及绘图异常修复
问题概述
- 矩阵转图环节出现警告,输出被替换为数组
- 绘图环节报错:
'_AxesStack' object is not callable
问题原因与修复步骤
1. 矩阵转有向图的警告问题
默认nx.from_numpy_array()会创建无向图,与需求的有向图类型不匹配,导致类型转换警告。需明确指定创建有向图:
- 将
G=nx.from_numpy_array(A)替换为G=nx.from_numpy_array(A, create_using=nx.DiGraph),或直接使用G=nx.DiGraph(A)。
2. 绘图报错的修复
报错源于两个细节问题:
- 参数拼写错误:
with_lables=True应为with_labels=True(单词拼写错误) - Matplotlib后端初始化顺序错误:
matplotlib.use('TkAgg')必须放在import matplotlib.pyplot as plt之前,否则会导致后端加载异常。
另外,原代码缺少plt.show(),调用该方法才能显示绘制的图像。
修正后的完整代码
import numpy as np import matplotlib matplotlib.use('TkAgg') # 必须在导入plt前设置后端 import matplotlib.pyplot as plt import networkx as nx # 邻接矩阵(注:当前矩阵对应有向图存在环,若需DAG需调整矩阵结构) A = np.array([[0,1,1,0], [1,0,1,1], [1,1,0,0], [0,1,0,0]]) # 创建有向图 G = nx.from_numpy_array(A, create_using=nx.DiGraph) # 绘制图形,修正参数并添加显示指令 nx.draw(G, with_labels=True, node_color='lightblue', node_size=1500) plt.show()
额外说明
当前提供的邻接矩阵对应的有向图存在环(如节点0与1互相指向),如果需要严格的有向无环图(DAG),需调整矩阵元素,确保不存在任何闭环路径。
内容的提问来源于stack exchange,提问作者Leonhart Dreyse
相关产品推荐
相关产品推荐

