是否有Python的交互式图形库

我正在寻找Python的交互式图形库。

通过“图形”,我的意思是通过一组顶点连接的一组节点(不是xy轴上的值图,也不是像素网格)。

通过“交互式”,我的意思是我可以拖放节点周围,我需要能够点击节点/顶点,并让库传递节点/顶点到我的回调,这可能会添加/删除节点/顶点或显示信息(由于数据集太大/很复杂,我无法在启动时加载完整的图形;相反,我将根据用户输入只加载必要的数据切片)。

通过Python,我的意思是编程语言Python,图形库应该具有CPython绑定。 我有Python 2.7和Python 3.1,但如果需要可以降级到2.6。 这种语言要求是因为我正在使用的数据集只具有Python绑定。

图形库必须支持有向图并能够自动布局节点。 我需要在节点上放置标签。

优选地,布局算法应该使相邻节点彼此靠近。 它应该能够在我4岁的笔记本电脑中合理地处理100-1000个节点和约300-4000个顶点(我通常从大约100个节点开始,但数量可能会根据用户输入而扩大)。 最好它应该是一个没有太多依赖性的库(可能除了Gnome)。 开源是首选。

我已经使用Tkinter Canvas编写了一个简单的程序原型,但我需要一个更严格的图形库来扩展程序。 我已经看过graphviz和matplotlib,但显然他们只用于处理静态图形,显然需要大量的工作来完成交互操作(如果我错了,请纠正我,我只是简单地看了一下) 。 我也尝试将图形生成为SVG文件并使用Inkscape进行查看,但速度太慢,占用太多内存,并且由于顶点数量太多,它变得混乱不堪。


看起来像Nodebox可能是你想要的:

http://nodebox.net/code/index.php/Graph Mac OSX

http://www.cityinabottle.org/nodebox/ Windows (使用OpenGL)

Nodebox截图

图形对象也具有鼠标交互功能,捆绑在graph.events对象中。 它具有以下属性:

  • graph.events.hoveredNone或鼠标悬停的节点。
  • graph.events.pressedNone或鼠标按下的节点。
  • graph.events.draggedNone或正在拖动的节点。
  • graph.events.clickedNone或最后一个节点被点击。
  • graph.events.popup :当为True ,将在悬停节点上显示一个弹出窗口。

  • 同样来到了Gephi,看起来这可能也有你想要的功能。

    http://gephi.org/ WindowsLinuxMac OSX

    Gephi是一个用于各种网络和复杂系统,动态和分层图形的交互式可视化和探索平台。

    gephi截图


    如果没有,你一定要看igraph库。

    这是一个强大的库,可以处理大图和不同的布局风格。 根据特征列表,它也可以用于有向图和2D和3D中的交互式和非交互式可视化。 还有一个教程。

    更新:另一个着名的库是NetworkX,在这里有Python包。 请注意,由Acorn推荐的Mac / Windows软件Nodebox使用NetworkX算法。


    我也有同样的问题。 最后,我认为nodebox opengl似乎有诀窍。 不要尝试在以下链接中使用图形库

    http://nodebox.net/code/index.php/Graph

    与nodebox的opengl。 它不起作用,该图库仅与mac OSX nodebox兼容。 但在任何情况下都可以,因为你不需要它。

    请参阅以下问题:

    将标签添加到nodebox opnegl中图形的边缘

    它显示了适用于我的示例代码,可以修改代码以便点击节点不仅可以移动节点,还可以修改图形。

    只需删除

    label = "Placeholder"
    

    从代码和它的作品。

    编辑:

    我在这里提供了一些更详细的示例代码:Nodebox打开GL Graph,尺寸函数无法识别。 (Ubuntu的)

    链接地址: http://www.djcxy.com/p/37693.html

    上一篇: Is there an interactive graphing library for python

    下一篇: Python Graph Library