我正在编写一个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进行查看,但它太慢并且需要太多内存,并且由于顶点数量太多而变得混乱.
最近我发现IPython notebook哪个是强大的工具.作为一名IT学生,我一直在寻找一种用Python表示图形的方法.例如,我想知道是否有可以从中抽取的库(如numpy或matplotlib?)
{ "1" : ["3", "2"],
"2" : ["4"],
"3" : ["6"],
"4" : ["6"],
"5" : ["7", "8"],
"6" : [],
"7" : [],
"8" : []
}
Run Code Online (Sandbox Code Playgroud)
这样的事情:

有这样的事吗?
我有一个> 10k的(无序)数字对列表。我想将它们直接或间接地分类为连接对的集合。我认为这对应于无向图。我使用python,并试图像这样来表示这种结构。
为了知道所有连接到数字i,我可以检查是否有从路径i到j所有j在列表除外i。但是,使用此实现,对于我正在处理的列表大小而言,计算时间变得太长。有没有更有效的方法可以做到这一点?(或者是否已经建立了python库?)
我正在接收以下格式的数据:
tail head
P01106 Q09472
P01106 Q13309
P62136 Q13616
P11831 P18146
P13569 P20823
P20823 P01100
...
Run Code Online (Sandbox Code Playgroud)
有没有一种很好的方法将此数据格式化为带有numpy数组的图形?我希望使用此图计算PageRank。
到目前为止,我有
import numpy as np
data = np.genfromtxt('wnt_edges.txt', skip_header=1, dtype=str)
Run Code Online (Sandbox Code Playgroud)
我当时在考虑使用Python中的“表示图形(数据结构)”中的图形数据结构,但在这种情况下似乎没有任何意义,因为我将进行矩阵乘法。