python networkx.draw没反应不报错
时间: 2023-10-29 11:56:17 浏览: 503
如果 `networkx.draw()` 没有反应且不报错,可能是因为您没有使用 `plt.show()` 或 `plt.savefig()` 将图形显示出来或保存下来。您需要在调用 `networkx.draw()` 后再调用 `plt.show()` 或 `plt.savefig()` 来显示或保存图形。另外,您也可以尝试使用 `plt.ion()` 来开启交互模式,这样您就可以在绘图时进行交互操作了。
相关问题
nx.draw(nx_graph, pos, node_color=colors, with_labels=True)报错'_AxesStack' object is not callable
这个错误可能是因为您在代码中使用了 `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()` 方法来显示图形。这个修改后的代码应该可以正常运行了。
报错DGLError: dgl.to_networkx only supports homogeneous graphs
如果您在使用`dgl.to_networkx`将DGL图转换为NetworkX图对象时遇到`DGLError: dgl.to_networkx only supports homogeneous graphs`的错误,可能是因为您尝试将异质图转换为NetworkX图对象。
`dgl.to_networkx`函数目前仅支持将同质图转换为NetworkX图对象。如果您尝试将异质图转换为NetworkX图对象,则会出现上述错误。
如果您要可视化异质图,可以考虑使用DGLPlot或其他可视化工具,如Gephi或Cytoscape。这些工具支持可视化异质图,并提供更高级的可视化功能。
如果您需要将异质图转换为同质图进行可视化,可以使用DGL库中的`dgl.metapath_reachable_graph`函数将异质图转换为同质图。以下是一个简单的例子:
```python
import dgl
# 加载异质图数据
hetero_graphs, _ = dgl.load_graphs('data.bin')
hetero_graph = hetero_graphs[0]
# 将异质图转换为同质图
homograph = dgl.metapath_reachable_graph(hetero_graph, ['author', 'paper', 'venue'])
# 将同质图转换为NetworkX图对象
nx_graph = homograph.to_networkx()
# 可视化
pos = nx.spring_layout(nx_graph)
nx.draw(nx_graph, pos, with_labels=True)
plt.show()
```
在这个例子中,我们使用`dgl.metapath_reachable_graph`函数将异质图转换为同质图,并使用`to_networkx`函数将同质图转换为NetworkX图对象进行可视化。
阅读全文