【发布时间】:2016-06-26 21:08:58
【问题描述】:
我想以一种有效的方式在 graph-tool 中指定一个图的顶点坐标。
给定一个看起来像这样的 csv:
Node,X,Y
1,2.5,3.8
2,3.4,2.9
...
我希望图形工具在 (2.5,3.8) 等位置绘制顶点 1...
一个无效的解决方案如下: Explicit vertex position in python graph-tool ,所以我基本上可以在我的所有坐标上使用 for 循环并将它们保存在属性映射“pos”中。如果我的图表是“g”并且我的 csv 是使用数据框“坐标”中的 pandas 读取的,我可以这样做:
for i in range(1,numnodes+1):
pos[g.vertex(i)] = (coordinates.values[i-1,1],coordinates.values[i-1,2])
问题是我的节点数 numnodes 很大(~10^7),这可能需要一些时间。
有没有更有效的方法来做这个操作,直接在属性映射'pos'中输入数据?
【问题讨论】:
-
您可以尝试以矢量化方式使用它:
pos = coordinates[['X','Y']].values而不是循环吗?我不知道graph-tool模块,但我想它应该能够与 numpy 数组一起使用,甚至可能与 pandas 数据框一起使用......
标签: python performance pandas graph graph-tool