ТОЧКА Graphviz располагает Узлы в кругах, расположение, слишком “компактное”

Я являюсь промежуточным, там нравятся, посмотрите редактирование

Хорошо вот моя проблема, я генерирую график модуля Python, включая все файлы с их функциями/методами/классами.

Я хочу расположить его так, который узлы собирают в кругах вокруг их родительских узлов, в настоящее время все находится на одной гигантской горизонтальной строке, которая делает вещь> 50k пиксели широкий и также позвольте нам svg сбой преобразователя (только рендеринг о половине графика).

Я прошел документы, но не мог найти ничего, что, кажется, добивается цели.

Таким образом, вопрос:
Существует ли простой способ сделать это, или у меня есть к расположению все это один?:/

Править:
Благодаря Andrews комментируют, что у меня есть правильное расположение, единственная проблема теперь состоит в том, что это немного к "компактному"..., таким образом, вопрос теперь, как зафиксировать это?

Test

19
задан Community 8 February 2017 в 14:23
поделиться

2 ответа

Я упомянул все наиболее важные параметры, которые влияют на ваш текущий макет, а затем предложил значения для этих параметров. Тем не менее, я подозреваю, что вы можете получить желаемый макет, просто применив пару из этих предложений.

  • уменьшить вес края , например [weight = 0,5]; это сделает ребра длиннее, в результате чего узкие кластеры, которые вы в настоящее время видите на своем графике , «разветвляются».

  • избавиться от границ узла , node_A [color = none; shape = plaintext]; особенно для узлов овальной формы, существенная часть общего пространства узла «не используется» (т. е. не используется для отобразить метку узла).

  • явно устанавливает размер шрифта для узлов (границы узлов увеличиваются так, чтобы они окружали текст узла , что означает, что шрифт {{ 1}} размер и количество текста для данного узла существенно влияют на его размер ); [fontsize = 11] должен быть большим, достаточно большим, чтобы быть разборчивым, но при этом уменьшать "загроможденный" вид (размер по умолчанию - 14).

  • увеличить минимальное расстояние между узлами с помощью 'nodesep' ; например, nodesep = 2.0; это напрямую рассмотрит ваше возражение относительно того, что ваша диаграмма "слишком компактна". ('nodesep' и 'ranksep' , вероятно, влияют на то, как точка рисует график больше, чем любые другие параметры для узла, края или графика. В вашем случае {{1 }} похоже, что у вас только два ранга узлов; 'ranksep' устанавливает минимальное расстояние между узлами разных рангов - это выглядит как и все узлы , составляющие ваш график, имеют одинаковый ранг (за исключением нескольких узлов верхнего уровня в центрах).

  • явно задайте общий размер графа , например size = "7.75,10.25 дюймов (гарантирует, что ваш график умещается на странице 8,5 x 11 и занимает все пространство)

  • И одно чисто эстетическое предложение , которое в лучшем случае чтобы ваш график выглядел менее загроможденным: цвет шрифта по умолчанию для обоих краев и узлов черный. Большая часть чернил на ваш график основан на этих двух структурах (особенно если вы удалите границы узла), поэтому я бы , например, установил либо цвет шрифта узла (текст) или край шрифта на "синий", чтобы помочь глазу различать два набора структур графа .

34
ответ дан 30 November 2019 в 03:19
поделиться

Если он слишком компактен, вам нужно изменить длину ребра. У вас есть несколько вариантов в зависимости от макета графа:

  1. Если ваш макет sfdp или fdp, измените свойство graph K. По умолчанию 0,3.
  2. Для neato (или fdp) настройте свойство edge len. По умолчанию 1,0 для neato и 0,3 для fdp.
  3. Для точки можно использовать свойство edge minlen, которое является минимальной длиной края. По умолчанию 1.

Возможно, вы также захотите поработать со свойством графа model, которое определяет поведение кластеризации. В частности, попробуйте subset. Я полагаю, что это поможет вам справиться с len: http://www.graphviz.org/doc/info/attrs.html#d:model

Кроме того, вы можете удалить все перекрытия вместе с помощью методов масштабирования: http://www.graphviz.org/doc/info/attrs.html#d:overlap

6
ответ дан 30 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: