nx.draw(nx_graph, pos, node_color=colors, with_labels=True)报错'_AxesStack' object is not callable
时间: 2024-02-11 21:05:38 浏览: 107
这个错误可能是因为您在代码中使用了 `plt` 变量名,而这个变量名可能已经被其他代码使用了。为了解决这个问题,您可以尝试使用 `plt.figure()` 创建一个新的 Figure 对象,并调用 `plt.show()` 方法来显示图形。以下是修改后的代码:
```python
import dgl
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
# 加载异质图
graph = dgl.load_graphs("data.bin")[0][0]
# 将异质图转换为 NetworkX 图
nx_graph = nx.DiGraph()
for ntype in graph.ntypes:
for etype in graph.canonical_etypes:
src, dst = graph.all_edges(etype=etype, order='eid')
for i in range(len(src)):
src_id = int(src[i])
dst_id = int(dst[i])
src_node = (str(ntype) + '_' + str(src_id), str(ntype))
dst_node = (str(ntype) + '_' + str(dst_id), str(ntype))
nx_graph.add_edge(src_node, dst_node, key=str(etype))
# 可视化 NetworkX 图
pos = nx.spring_layout(nx_graph)
colors = np.array([node[1] for node in nx_graph.nodes()])
plt.figure()
nx.draw(nx_graph, pos, node_color=colors, with_labels=True)
plt.show()
```
在这个修改后的代码中,我们使用 `plt.figure()` 创建了一个新的 Figure 对象,并在这个 Figure 对象中绘制了 NetworkX 图。然后,我们调用 `plt.show()` 方法来显示图形。这个修改后的代码应该可以正常运行了。
阅读全文