Graphviz压缩图

时间:2017-01-05 21:24:47

标签: graphviz circos

我使用graphviz及其提供的circo工具生成图表。

生成的图形是一个很好的形状,但是节点之间边缘的长度比它们需要的要大很多,这使得节点的文本很小(相对于输出图像)而且很难读取。

如何在输出图像中使节点更大(相对),以便节点内的文本更易于阅读,

输出图片:

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

2 个答案:

答案 0 :(得分:1)

我会尝试将 mindist (小于1)添加到图表中:

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

[编辑]

也许渲染器版本有所不同:这是我机器上的结果

enter image description here

答案 1 :(得分:1)

尝试改变-Gsize(英寸单位)和-Gdpi。您会发现,如果将它们一起更改,则会得到具有相同像素大小的不同输出,但节点之间的间距相对于节点本身的大小不同。 -Gnodesep-Nfontsize也可能对调整有用。您也可以通过渲染EPS或PDF或SVG然后将其转换为PNG而不是使用Graphviz的PNG渲染器来获得更好的运气。根据我的经验,从Graphviz获得令人满意的输出是一种非常不精确的科学。