2012-04-18 4 views
2

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

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

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

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

+1

Не могли бы вы привести несколько примеров ваших файлов .dot? – Maehler

ответ

3

Возможно. Существует атрибут 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. Это должно заставить вас начать.

Смежные вопросы