我在使用Python和networkx进行大规模图形可视化方面遇到了问题。我希望可视化的图是有向的,它具有215,000个边和顶点集大小。从文档(顶部链接)中可以看出,networkx支持使用matplotlib
和GraphViz进行绘图。在matplotlib
和networkx中,绘图的过程如下:
import
networkx as nx
import matplotlib.pyplot as plt
#Let g be a graph that I created
nx.draw(g)
在使用nx.draw(g)
之后,我遇到了内存错误,通常之后您会执行plt.show()
或者plt.[some_function]
以便将文件保存为高效的格式等。
接下来我尝试了GraphViz。从维基百科页面可以得知,dot
格式用于有向图,于是我创建了一个dot文件:
nx.write_dot(g, "g.dot")
这个方法很有效,我在当前目录下生成了一个12兆字节的dot文件。接下来,我运行了dot
程序(graphviz的一部分),用来创建一个postscript文件:
dot -Tps g.dot -o g.ps
这减慢了我的电脑速度,需要运行几分钟,然后在终端中显示Killed
。因此它永远无法执行... 在阅读 graphviz 的文档时,似乎只支持大型图形可视化的不定向图。
问题: 通过这两次不成功的尝试,有没有人能向我展示如何使用 Python 和 Networkx 可视化具有约 215,000 个顶点和 215,000 条边的大型图形?我怀疑,与 Graphviz 一样,我必须将其输出到一个中间格式(虽然这不会太难,但它不会像内置函数那样容易),然后使用另一个工具读取中间格式,再输出可视化结果。
所以,我正在寻找以下内容:
- 将网络x图形输出为中间格式
- 使用新的包/软件/工具(理想情况下是 Python-interactive)读取中间格式并可视化大型图形
如果你需要更多信息,请告诉我!