2017-01-05 18 views
0

私はgraphvizとそれが提供するcircoツールでグラフを生成しています。Graphviz圧縮グラフ

生成されたグラフは素晴らしい形状ですが、ノード間のエッジの長さが必要以上に長くなり、ノードのテキストが小さくなる(出力イメージに対して)読む。

ノード内のテキストが読みやすくなるように、私は、出力画像に(比較的)ノードが大きくなることができますどのよう

出力画像:

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が1行でレンダリングされていたことです。これは、フォントサイズと組み合わせることで、ポジショニングに大きな変化をもたらすようです。 – Danack

1

-Gsize(インチ単位)と-Gdpiを変えてみます。両方を一緒に変更すると、同じピクセルサイズの異なる出力が得られますが、ノード間の間隔はノード自体のサイズに比べて異なります。 -Gnodesep-Nfontsizeも調整すると便利です。また、GraphvizのPNGレンダラーを使用する代わりに、EPSやPDFまたはSVGにレンダリングし、それをPNGに変換すると、より良い運を得られるかもしれません。 Graphvizからの喜ばしい結果を得ることは、私の経験上、非常に不正確な科学です。