2017-01-05 5 views
0

Я создаю график с графическим изображением и инструмент circo, который он предоставляет.Graphviz compacting graph

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

Как я могу сделать узел будет больше (относительно) в выходном изображении, так что текст внутри узлов легче читать,

Вывод изображения:

enter image description here

Источник график файл:

digraph G { 
    FoundUrlToFollow [shape=box]; 
    "Fetch the URL" [shape=circle]; 
    FoundUrlToFollow -> "Fetch the URL"; 
    ResponseReceived [shape=box]; 
    "Fetch the URL" [shape=circle, label=<Fetch the URL>]; 
    "Fetch the URL" -> ResponseReceived; 
    ResponseError [shape=box]; 
    "Fetch the URL" [shape=circle, label=<Fetch the URL>]; 
    "Fetch the URL" -> ResponseError; 
    ResponseReceived [shape=box]; 
    "Log response" [shape=circle]; 
    ResponseReceived -> "Log response"; 
    ResponseReceived [shape=box]; 
    "Is the response OK?" [shape=circle]; 
    ResponseReceived -> "Is the response OK?"; 
    ResponseOk [shape=box]; 
    "Is the response OK?" [shape=circle, label=<Is the response<br/>OK?>]; 
    "Is the response OK?" -> ResponseOk; 
    ResponseOk [shape=box]; 
    "Is the response HTML?" [shape=circle]; 
    ResponseOk -> "Is the response HTML?"; 
    HtmlToParse [shape=box]; 
    "Is the response HTML?" [shape=circle, label=<Is the response<br/>HTML?>]; 
    "Is the response HTML?" -> HtmlToParse; 
    HtmlToParse [shape=box]; 
    "Parse the HTML to find links" [shape=circle]; 
    HtmlToParse -> "Parse the HTML to find links"; 
    FoundUrl [shape=box]; 
    "Parse the HTML to find links" [shape=circle, label=<Parse the HTML<br/>to find links>]; 
    "Parse the HTML to find links" -> FoundUrl; 
    FoundUrl [shape=box]; 
    "Should we follow this URL?" [shape=circle]; 
    FoundUrl -> "Should we follow this URL?"; 
    FoundUrlToSkip [shape=box]; 
    "Should we follow this URL?" [shape=circle, label=<Should we<br/>follow this<br/>URL?>]; 
    "Should we follow this URL?" -> FoundUrlToSkip; 
    FoundUrlToFollow [shape=box]; 
    "Should we follow this URL?" [shape=circle, label=<Should we<br/>follow this<br/>URL?>]; 
    "Should we follow this URL?" -> FoundUrlToFollow; 
    FoundUrlToSkip [shape=box]; 
    "Log skipped links" [shape=circle]; 
    FoundUrlToSkip -> "Log skipped links"; 
    graph [label="Switches are circles. Events are boxes.", fontsize="12", overlap=scale]; 
    edge [splines=curved]; 
} 

Команда:

circo -Tpng -ograph_so.png graph.dot 

ответ

1

Я хотел бы попробовать добавить mindist (менее 1) к графику:

graph [..., overlap=scale, mindist=.6]; 

[править]

может быть версия рендер сделать разницу: вот результат на моей машине

enter image description here

+0

Это не имеет особого значения - https://i.stack.imgur.com/gpOUX.png – Danack

+0

Да, это не оптимально. Но см. Мое редактирование ... – CapelliC

+0

Единственное, что было по-другому, это то, что я, по-видимому, не компилировался в libexpat, и поэтому HTML обрабатывался на одной строке. Это в сочетании с fontsize, похоже, вносит большие изменения в позиционирование. – Danack

1

Попробуйте изменять -Gsize (единицы дюймов) и -Gdpi. Вы обнаружите, что если вы измените их оба вместе, вы получите разные выходы с одинаковым размером пикселей, но с разным шагом между узлами относительно размера самих узлов. -Gnodesep и -Nfontsize также могут быть полезны для настройки. Вам также может быть повезло, если вы окажете EPS или PDF или SVG, а затем конвертируете это в PNG, вместо использования рендеринга PNG Graphviz. Получение приятного результата от Graphviz - это, по моему опыту, очень неточная наука.

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