图形工具中的顶点坐标

Vertices coordinates in 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 是使用数据帧 'coordinates' 中的 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数组,否则:

pos = [tuple(t) for t in coordinates[['X','Y']].values]

我找到了问题的答案,一个有效的方法是使用 .set_2d_array() 函数;

pos.set_2d_array(coordinates[['X','Y']].values.T)

成功了。 这里的“.T”是转置函数,是numpy库的一部分。