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

Как оптимизировать ширину вывода GraphViz?

Я делаю графики с огромным соотношением ширины: они имеют размер 51706 x 503 пикселей. Как я могу сказать GraphViz для оптимизации ширины?

Примечание 1: граф фактически является деревом с каждым node, имеющим много детей. Вот пример .

Примечание 2: Я думаю, что использую точку:)

Примечание 3: Вот Ruby code

4b9b3361

Ответ 1

Если граф состоит из нескольких деревьев, которые не связаны, вы можете разделить их (как указано в Graphviz: сломать плоский, но редко связанный граф в несколько строк?)

В зависимости от вашего конкретного графика вы можете получить меньший график при использовании

ratio="compress"

(Вы должны указать size хотя)

Для подробной оптимизации на определенном графике вы можете добавить атрибуты rank и вручную распределить узлы в разных рангах.


Edit:

Существует инструмент graphviz, называемый unflatten, который, как представляется, существует именно для этой цели:

unflatten - это препроцессор, который используется для улучшения аспекта отношение графов, имеющих много листьев или отключенных узлов. Обычно макет для такого графика, как правило, очень широкий или высокий. unflatten вставляет невидимые края или регулирует minlen по краям для улучшения компоновка компоновки.

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

Ответ 2

Вы можете попробовать играть с параметром ratio.

Ответ 3

У меня также была проблема, что у neato было много места между ящиками. Наконец, я добился разумного результата, используя следующие настройки графика:

overlap=prism, overlap_scaling=0.01, ratio=0.7

Это особенно полезно для тестирования различных значений для overlap_scaling и ratio. Лучше всего использовать меньшие примеры (< 50 узлов) и использовать gvedit.exe для просмотра эффектов.

Мне потребовалось некоторое время, чтобы определить эти параметры, которые описаны на http://www.graphviz.org/doc/info/attrs.html