有没有办法保存网络'绘制'结果到文件或变量而不是显示它?

时间:2014-09-22 09:14:37

标签: networkx

我想生成图表的图形但是将其保存到文件而不是将其显示到屏幕。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:7)

是的! Networkx将绘制到matplotlib图,之后您可以使用所有matplotlibs API,包括保存文件(选择格式和dpi)。

import networkx as nx
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge(1,2)
f = plt.figure()
nx.draw(g, ax=f.add_subplot(111))
f.savefig("graph.png")

matplotlib.use("Agg")是可选的,但它适用于从不想以交互方式显示matplotlib图的程序。

答案 1 :(得分:1)

Here is the documentation您正在寻找,有许多解决方案。我可以补充说,如果没有人应该阅读或修改创建的文件(它只是一种存储格式),你可以使用pickle。如果您需要更通用的格式,因为图形将用于其他工具,您可能更喜欢graphML或Json。

示例:

>>> cube = nx.hypercube_graph(2)
>>> nx.write_gpickle(cube,"cube.gpickle")
>>> readCube = nx.read_gpickle("cube.gpickle")
>>> cube.edge
{(0, 1): {(0, 0): {}, (1, 1): {}}, (1, 0): {(0, 0): {}, (1, 1): {}}, (0, 0): {(0, 1): {}, (1, 0): {}}, (1, 1): {(0, 1): {}, (1, 0): {}}}
>>> readCube.edge
{(0, 1): {(0, 0): {}, (1, 1): {}}, (1, 0): {(0, 0): {}, (1, 1): {}}, (0, 0): {(0, 1): {}, (1, 0): {}}, (1, 1): {(0, 1): {}, (1, 0): {}}}