我想生成一个图形,并将其保存到文件中而不是显示在屏幕上。有没有办法可以做到这一点?
我想生成一个图形,并将其保存到文件中而不是显示在屏幕上。有没有办法可以做到这一点?
是的!networkx
可以绘制到matplotlib图形中,之后您可以使用所有的matplotlib
API,包括保存文件(以所选格式和dpi)。
import networkx
import matplotlib
import matplotlib.pyplot
g = networkx.Graph()
g.add_edge(1,2)
fig = matplotlib.pyplot.figure()
networkx.draw(g, ax=fig.add_subplot())
if True:
# Save plot to file
matplotlib.use("Agg")
fig.savefig("graph.png")
else:
# Display interactive viewer
matplotlib.pyplot.show()
说明:
matplotlib.use("Agg")
是可选的。它适用于从不想显示交互式查看器的程序。f.add_subplot()
所有参数都是可选的:
这里是你要找的文档,其中包含许多解决方案。我想补充一点,如果没有人需要读取或修改创建的文件(它只是一个存储格式),您可以使用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): {}}}