我在 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
格式用于有向图,我创建了一个点文件:
nx.write_dot(g, "g.dot")
这很好,我在当前目录中有一个 12 兆字节的点文件。接下来我运行dot
程序(graphviz 的一部分以创建 postscript 文件):
dot -Tps g.dot -o g.ps
这会降低我的计算机速度,运行几分钟,然后显示Killed
在终端中。所以它永远无法执行......在阅读 graphviz 的文档时,似乎只支持无向图用于大型图形可视化。
问题:通过这两次不成功的尝试,谁能告诉我如何使用 python 和 networkx 来可视化我的大图,其中包含大约 215,000 个顶点和 215,000 个边?我怀疑与 Graphviz 一样,我将不得不输出为中间格式(尽管这不应该那么难,它不会像内置函数那样简单),然后使用另一个工具来读取中间格式,然后输出可视化.
所以,我正在寻找以下内容:
- 从networkx输出图到中间格式
- 使用新的包/软件/工具(最好是 python-interactive)读取中间格式并可视化大图
如果您需要更多信息,请告诉我!