如何获取图形工具中特定布局算法绘制的图形坐标?

时间:2013-01-02 11:42:37

标签: python graph coordinates graph-layout

我想做一个显示here的示例。它在我的机器上运行得非常好。问题是,我无法将节点的坐标作为存储在变量 pos 中某处的数组。我该怎么做?

提前感谢您的回复!

1 个答案:

答案 0 :(得分:4)

我在分配给import pdb; pdb.Pdb().set_trace()的行后面点了pos,并在pos戳了戳。它是一个包含顶点属性的graph_tool.PropertyMap

(Pdb) pos
<PropertyMap object with key type 'Vertex' and value type 'vector<double>', for Graph 0x2efbf90

似乎没有直接的方法来迭代这个对象的每个顶点,但我们可以得到图形,并询问每个顶点的图形:

(Pdb) pos.get_graph().vertices()
<graph_tool.libgraph_tool_core.VertexIterator object at 0x2f99950>

这将迭代每个顶点,我们可以将它用作pos的键,这是一个映射:

(Pdb) pos[pos.get_graph().vertices().next()]
array([-37.40184702,  25.3717068 ])

或者如果你想要所有这些,你可以把它放在示例程序中:

for vertex in g.vertices():
    print pos[vertex]

将打印:

array([-37.40184702,  25.3717068 ])
array([-37.5790565 ,  26.77548156])
array([-35.57640651,  24.60125253])
array([-38.90262591,  24.30374   ])
array([-33.72945377,  24.31891936])
array([-32.68247364,  25.85861809])
[...]