Я пытаюсь форсировать положение узлов. У меня есть координаты x и y моих узлов и их также ориентированный граф. Я могу использовать rank = same для обработки строки (координата y), но не могу понять, как я могу обрабатывать столбец (координата x).
Как заставить node позицию (x и y) в графике
Ответ 1
Вы можете использовать атрибут pos (https://www.graphviz.org/doc/info/attrs.html#d:pos), например:
xxx [
label = xxx
pos = "0,0!"
]
yyy [
label = yyy
pos = "10,10!"
]
Вам также нужно будет указать neato
или fdp
, чтобы dot
командной строки была (для fdp):
dot -Kfdp -n -Tpng -o sample.png sample.dot
Ответ 2
Я не мог получить флаг -n
с dot -Kfdp
.
Однако мне удалось заставить его работать с neato, используя следующую команду:
neato sample.dot -n -Tpng -o sample.png
Ответ 3
Вот пример, который я нашел: https://observablehq.com/@magjac/placing-graphviz-nodes-in-fixed-positions
По сути, атрибут позиции "pos" может быть указан для узла. Работает только с движками neato или fdp, а не с точкой.
!
указывает, что позиция является входом и не должна изменяться.