Подтвердить что ты не робот

Как заставить node позицию (x и y) в графике

Я пытаюсь форсировать положение узлов. У меня есть координаты x и y моих узлов и их также ориентированный граф. Я могу использовать rank = same для обработки строки (координата y), но не могу понять, как я могу обрабатывать столбец (координата x).

4b9b3361

Ответ 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, а не с точкой.

! указывает, что позиция является входом и не должна изменяться.