Как получить координаты графа, нарисованного по определенному алгоритму компоновки в графе-инструменте?
Я хочу сделать пример, показанный здесь. Он отлично работает на моей машине. Проблема в том, что я не могу получить координаты узлов в виде массива, который хранится где-то в переменной pos. Как мне это сделать?
Заранее спасибо за ваш ответ!
1 ответ
Решение
Я воткнул 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])
[...]