是否有python的交互式图形库

Lie*_*yan 57 python interactive graph

我正在寻找一个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进行查看,但它太慢并且需要太多内存,并且由于顶点数量太多而变得混乱.

Aco*_*orn 28

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

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

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

Nodebox截图

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

  • graph.events.hovered:None或鼠标悬停的节点.
  • graph.events.pressed:None或鼠标按下的节点.
  • graph.events.dragged:None或被拖动的节点.
  • graph.events.clicked:None或者单击最后一个节点.
  • graph.events.popup:何时True,将在悬停节点上显示一个弹出窗口.

同样来自Gephi,看起来可能也有你想要的功能.

http://gephi.org/ Windows,LinuxMac OSX

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

gephi截图


lec*_*tif 9

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

它是一个功能强大的库,可以处理大型图形和不同的布局样式.它还可以根据特征列表用于有向图以及2D和3D中的交互式和非交互式可视化.还有一个教程.

更新:另一个著名的图书馆是NetworkX对于其中有Python包在这里.请注意,Acorn推荐的Mac/Windows软件Nodebox使用NetworkX算法.

  • 是的,你是对的,igraph中的tkplot只是R-only. (3认同)