繁体   English   中英

如何在没有 Anaconda/Spyder 的情况下查看使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM