11

私はこれがどのようにグラフ(組織図)を持っています:

digraph G {
nodesep=0.3;
ranksep=0.2;
margin=0.1;
node [shape=rectangle];
edge [arrowsize=0.8];
1 -> 2;
1 -> 3;
1 -> 4;
1 -> 5;
1 -> 6;
1 -> 7;
1 -> 8;
1 -> 9;
1 -> 10;
}

ここに画像の説明を入力してください

私は70人の組織図を持っていますが、A4で印刷することはできません。ノードを2行または3行に配置するにはどうすればよいですか?

4

1 に答える 1

19

ここに2つの可能性があります(この質問も参照してください):

1.unflattenユーティリティを使用する

Graphvizは、と呼ばれるツールを提供しますunflatten。このコマンドラインを使用してグラフを前処理する場合:

unflatten -l 3 wide.gv | dot -Tpng -o wide.png

出力画像は次の図のようになります。これは少し幅が狭く、-lオプションで遊ぶことができます。

graphvizの平坦化されていないグラフの例

2. `rank =same'と非表示のエッジを使用します

標準的な手法を使用して、自動的にレイアウトされたグラフを希望どおりに見せることができます。

  • rank=sameサブグラフでノードをグループ化し、どのノードを同じ行に配置するかを定義します
  • さまざまなサブグラフがさまざまなランクに表示されるようにするための非表示のエッジ
  • いくつconstraint=falseかのエッジがレイアウトに影響を与える可能性があります
  • group直定規を促進するノードの属性。

出力グラフは必ずしもきれいであるとは限りません...

ここに例があります、あなたはおそらくもっとうまくやることができます。また、グラフが動的に生成される場合、これはあまり実用的ではない可能性があります。

digraph G {
nodesep=0.3;
ranksep=0.2;
margin=0.1;
node [shape=rectangle];
edge [arrowsize=0.8];


edge[style=invis];
node[group=a];
2->5->8;
node[group=b];
1->3->6->9;
node[group=c];
4->7->10;


edge[style=solid];
1 -> 2;
1 -> 3;
1 -> 4;
edge[constraint=false];
1 -> 5;
1 -> 6;
1 -> 7;
1 -> 8;
1 -> 9;
1 -> 10;
}

graphviz出力

于 2012-06-21T10:46:59.347 に答える