图形工具中的顶点坐标
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库的一部分。
我想在图形工具中以一种有效的方式指定图形顶点的坐标。
给定一个如下所示的 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库的一部分。