web-dev-qa-db-ja.com

GraphVizの出力幅を最適化するにはどうすればよいですか?

幅の比率が非常に大きいグラフを作成します。サイズは51706x503ピクセルです。 GraphVizに幅を最適化するように指示するにはどうすればよいですか?

注1:グラフは実際には、各ノードに多数の子を持つツリーです。これが サンプル です。

注2:ドットを使っていると思います:)

注3:これが ルビーコード

21
MickaelFM

グラフが接続されていない複数のツリーで構成されている場合は、それらを分割できます( Graphviz:フラットだがまばらに接続されたグラフを複数の行に分割しますか?

特定のグラフによっては、使用すると小さなグラフが得られる場合があります

ratio="compress"

(ただし、sizeを指定する必要があります)

特定のグラフの詳細な最適化のために、rank属性を追加し、ノードを手動で異なるランクに分散させることができます。


編集:

nflattenと呼ばれるgraphvizツールがあります。これはまさにこの目的のために存在しているようです:

unflattenは、多くのリーフまたは切断されたノードを持つグラフのアスペクト比を改善するために使用される、ドットに対するプリプロセッサです。このようなグラフの通常のレイアウトは、通常、非常に広いか高いです。 unflattenは、目に見えないエッジを挿入するか、エッジのミンレンを調整して、レイアウトの圧縮を改善します。

使用する必要はありませんでしたが、試してみる価値はあると思います。

15
marapet

また、ネイトが箱の間にたくさんのスペースを確保しているという問題もありました。最後に、次のグラフ設定を追加して使用して、妥当な結果を達成しました。

overlap=prism, overlap_scaling=0.01, ratio=0.7

これは、overlap_scalingとratioのさまざまな値をテストするのに特に役立ちます。小さい例(<50ノード)を使用し、gvedit.exeを使用して効果を確認するのが最も簡単です。

http://www.graphviz.org/doc/info/attrs.html に記載されているこれらの設定を特定するのにかなりの時間がかかりました。

5
CHN

ratio パラメーターで遊んでみることができます。

2
Michael Spector