Python工具可视化100k个顶点和1M条边?

13

我希望能够可视化数据,并希望能够交互式地展示。目前我正在使用NetworkX和Matplotlib,但当我尝试“绘制”图形时,我的8GB内存已经无法满足需求。我不知道如何处理这样大的数据集所存在的选项和技术。如果有人能够指点我一下方向,那就太好了。我还有一张CUDA启用的GFX卡,如果可以的话,也许可以派上用场。

目前我考虑只绘制连接最多的节点,例如具有最多边缘的顶点的前5%,然后在用户缩放或点击时填充连接较少的节点。

6个回答

4

我对此没有经验,但是tulip似乎是专门为此而设计的。


链接对我来说无法使用。 - Jay Askren
现在它可以工作了。也许服务器暂时出现了问题。 - Jay Askren
2
我的朋友告诉我Tulip非常适合这种工作,但是学习曲线陡峭。他建议我使用Cytoscape,但现在我正在寻找适用于Web应用的解决方案。 - wnewport
我不认为任何浏览器都能够快速处理那种负载,但你可以试试 :) - static_rtti

3
也许可以使用PyOpenGL?它可以与wxPython一起使用。 编辑:刚试过没有任何优化的性能,绘制100k个顶点需要0.2秒,绘制1M条边需要4秒。

2
你应该在官方的wxPython邮件列表上提问。那里有人可能会帮助你。但我很惊讶matplotlib不能做到这一点。也许只需要以某种方式重新构建你的代码。当前,在wxPython中绘制主要有各种DCs、FloatCanvas小部件之一或用于绘图的wx.Plot或matplotlib。

1

你考虑过 graphviz 吗?尽管它不是交互式的,但从一开始就设计用于处理非常大的图形(尽管 100 万条边可能超出了其能力范围)。

有一个 Python 模块(pydot),可以使与 graphviz 的交互变得简单。同样,不能确定它是否能够扩展到你的水平,但是很容易找出来:两者的安装都很简单。

希望这可以帮到你。


点很好,但我相信这已经超出了它的能力范围。幸运的是,现在有更好的开源解决方案,比如tulip(还有其他的)。 - static_rtti
是的,tulip对我来说也是新的 - 看起来很有趣。祝你好运找到合适的东西。 - sfinnie

1

你考虑过使用ParaViewVisIt吗?这两个交互式绘图程序专门设计用于处理和绘制(非常!)大型数据集。它们都有Python脚本接口,因此您可以从Python解释器内部自动化/控制可视化。


0
你尝试过 Gephi 吗?
我相信它的扩展性非常好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接