Pygraphviz и фиксированные позиции узлов

Как заставить pygraphviz поддерживать фиксированные позиции для моих узлов. Предположим, что у вас есть следующий код

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division

import pygraphviz as pgv
from _operator import pos

A=pgv.AGraph()

A.add_node(1,color='red',pos="0,1") 
A.add_node(2,color='blue',pos="1,10")
A.add_node(3,color='yellow'pos="2,2")


A.add_edge(1,2,color='green')
A.add_edge(2,3)
A.add_edge(2,2,"1")
A.add_edge(1,3)

A.graph_attr['epsilon']='0.001'
print(A.string()) # print dot file to standard output
A.layout('dot') # layout with dot
A.draw('foo.pdf') # write to file

Как заставить узлы появляться в заранее определенных позициях (0.1), (1,10 и соответственно (2,2)


person MiniMe    schedule 12.02.2017    source источник


Ответы (1)


Глядя на http://pygraphviz.github.io/documentation/pygraphviz-1.4rc1/reference/agraph.html и сигнатуру метода отрисовки, похоже, макет нужен только в том случае, если pos отсутствует.

"Если prog не указан и граф имеет позиции (см. layout()), то дополнительное позиционирование графа выполняться не будет."

В вашем случае вы можете просто попробовать без использования A.layout(). просто A.draw('foo.pdf')

person Anirudh Chari    schedule 17.02.2017