graphviz, как закрепить положение узлов на изображении

У меня есть вопрос о том, как визуализировать деревья. Теперь я использую graphviz или язык с точками и возникли некоторые проблемы.

Кратко о моем контексте. У меня есть ряд деревьев. Дерево на шаге Т получается из дерева на шаге Т-1 добавлением ребер. Я хочу создать изображение для каждого дерева. При просмотре этих изображений в средстве просмотра изображений я нажимаю кнопку «Далее» и хочу легко увидеть изменения в дереве от шага T-1 до шага T.

Что я делаю сейчас. Я написал скрипт, который создает «точечный» код для создания изображения для каждого графика. При нажатии на кнопку «Далее» в средстве просмотра изображений я вижу, как прыгают узлы. Но мне это не нравится. Я хочу, чтобы узлы оставались на одном и том же месте на каждом изображении, единственное изменение, которое я хочу видеть, это то, как появляются новые края и новые узлы.

Есть ли способ вставить узлы в их положение?


person ashim    schedule 18.04.2012    source источник
comment
Не могли бы вы привести несколько примеров ваших .dot файлов?   -  person Maehler    schedule 19.04.2012


Ответы (1)


Возможно. Существует атрибут pos (содержащий координаты) узлов и ребер, которые вам придется использовать.

Чтобы получить несколько примеров значений pos, вы можете просто вызвать dot без указания формата вывода. Это даст вам файл .dot с добавленными координатами.
Итак, файл minimal.dot

digraph G {
  a [label="Node A"];
  b [label="Node B"];
  a -> b;
}

обработка dot minimal.dot приведет к:

digraph G {
  node [label="\N"];
  graph [bb="0,0,82,108"];
  a [label="Node A", pos="41,90", width="1.14", height="0.50"];
  b [label="Node B", pos="41,18", width="1.14", height="0.50"];
  a -> b [pos="e,41,36 41,72 41,64 41,55 41,46"];
}

Ребро и каждый узел теперь имеют атрибут pos. Это должно помочь вам начать.

person dgw    schedule 19.04.2012