![](/img/trans.png)
[英]How to read a GML file on Spyder, Anaconda using networkX
[英]How do I view graphs created using NetworkX library without Anaconda/Spyder?
我正在学习离散数学课程。 学生应该使用NetworkX
库来可视化图形。 讲师和助教正在使用 Spyder 和 Anaconda。 而且我没有使用它们的计划。 我无法查看由 NetworkX 库创建的图形。 其余代码完美运行。 这是一个示例:
import networkx as nx
G = nx.Graph()
for i in range(1, 6):
G.add_node(i)
G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 4)
G.add_edge(4, 5)
G.add_edge(1, 6)
print(G.nodes())
print(G.edges())
nx.draw(G)
这是输出:
[1, 2, 3, 4, 5, 6]
[(1, 2), (1, 6), (2, 3), (3, 4), (4, 5)]
------------------
(program exited with code: 0)
Press return to continue
所以最后一行没有打印。 将其更改为print(nx.draw(G))
只会在输出的末尾添加一个None
。 我曾尝试使用 Geany、VS Code 和终端 (Bash),但看不到图表。 我该怎么办?
如何在不使用 Anaconda/Spyder 的情况下查看图表?
您可以使用 matplotlib,您只需将 nx.draw 上的参数设置为 matplotlib 图形的轴,例如:
import matplotlib.pyplot as plt
def draw_graph(nx_graph):
fig, axes = plt.subplots(1,1,dpi=72)
nx.draw(nx_graph, pos=nx.spring_layout(nx_graph), ax=axes, with_labels=True)
plt.show()
networkx 文档建议使用更具体的专用工具进行图形可视化,但这适用于基础知识。 参见: https : //networkx.github.io/documentation/stable/reference/drawing.html
这可以通过将图形视为外部图像来解决。 生成图形时,可以在不同的窗口中将其视为图像,也可以将其保存到当前目录。
需要从包matplotlib
中导入一个名为pyplot
的子模块来执行此操作。
假设使用nx.draw(graph-name)
绘制nx.draw(graph-name)
。 在 Spyder 中,它会自动输出图形。 但这不会发生在终端。
我们可以使用命令plt.show()
查看生成的图形。 我们将matplotlib.pyplot
作为plt
导入的地方。
plt.show()
将在不同的窗口中显示图形,但不会保存图形的副本。
如果要在当前目录中保存图形的副本,请使用plt.savefig('file-with-extension')
。 它将保存图形的副本。
下面是一个例子:
>>> import networkx as nx
>>> import matplotlib.pyplot as plt
>>> G = nx.graph()
>>> nx.add_path(G, [0, 1, 2, 3])
>>> nx.draw(G, with_labels=1)
>>> plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.