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

Posted

技术标签:

【中文标题】如何获取图形工具中特定布局算法绘制的图形的坐标?【英文标题】:How to get the coordinates of a graph drawn by specific layout algorithm in graph-tool? 【发布时间】:2012-12-16 18:49:37 【问题描述】:

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

提前感谢您的回复!

【问题讨论】:

什么意思?不就在那里,接近尾声了吗? pos = arf_layout(g, pos=sfdp_layout(g), max_iter=10000, a=30, d=0.3, weight=w)? 不,不是。在该行中,我只分配存储坐标的 pos 中的值。我需要从 pos 中提取它们。 【参考方案1】:

我在分配给pos 的行后面贴了一个import pdb; pdb.Pdb().set_trace(),然后戳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])
[...]

【讨论】:

就是这样,它有效!非常感谢兄弟,你帮了我很多。 +50! :) 非常感谢!!你救了我!

以上是关于如何获取图形工具中特定布局算法绘制的图形的坐标?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB画图工具中坐标外面的底色是灰的,该如修改?

如何用matlab输出图形中各点的坐标

“堆叠”与“悬挂”分层图形绘制算法的标准名称?

如何在Java中实现画图功能并在文本中显示坐标

计算机图形学

如何用matlab画平滑曲线?