45

私はgraphvizで非常に幸運に恵まれており、必要なほぼすべてのグラフを作成することができました。私はこれを複製しようとしています:

http://en.wikipedia.org/wiki/File:ICS_Structure.PNG

私ができる限り忠実に。そのグラフの下部はすべて上から下に流れており、正常に機能しています。私ができなかったのは、最初の3人の子供を「インシデントコマンダー」の真下に配置することです。彼らは左右に分岐します。さらに、上位8ノードでエッジがどのように共有されているかに注意してください。それはドットで可能ですか?私は他のすべてを扱うことができますが、それらのトップノードは扱うことができません。誰かが私にこれを解決するための手がかりを与えることができますか?

4

2 に答える 2

129

グラフ レイアウトを再現するための 2 つの便利な手法は次のとおりです。

  • 目に見えないノード
  • ランク制約

トップノードの簡単な試行は次のとおりです。

digraph g{
ranksep=0.2;

node[shape=box3d, width=2.3, height=0.6, fontname="Arial"];
n1[label="Incident Commander"];
n2[label="Public Information\nOfficer"];
n3[label="Liaison Officer"];
n4[label="Safety Officer"];
n5[label="Operations Section"];
n6[label="Planning Section"];
n7[label="Logistics Section"];
n8[label="Finance/Admin. Section"];

node[shape=none, width=0, height=0, label=""];
edge[dir=none];
n1 -> p1 -> p2 -> p3;
{rank=same; n2 -> p1 -> n3;}
{rank=same; n4 -> p2;}
{rank=same; p4 -> p5 -> p3 -> p6 -> p7;}
p4 -> n5;
p5 -> n6;
p6 -> n7;
p7 -> n8;
}

結果は次のとおりです。

ドット レイアウトのトップ ノード

于 2011-09-10T20:36:35.597 に答える
-3

ネイティブの Graphviz (ドット) レンダリングは、オリジナルで使用されているオルガノグラム レンダリング スタイルをサポートしていません。直交エッジを生成できますが (図のように)、エッジのグループ化を自動化する方法はありません。垂直方向のレイヤリングは で実現できますminlen

受け入れられた答えは、表記法の乱用ですが、全体として合理的なアプローチです。自動化が難しい可能性が高く、推奨される WYSIWIG の代替案が最も単純である可能性があります。

悪い ICS レンダリング

提供されたソリューションの変更点は次のとおりです。

graph [splines=ortho]; edge [dir = none];

{ rank = same; n2; n3; }
n1 -> { n2; n3; };
n1 -> n4 [minlen = 2];
{ rank = same; n5; n6; n7; n8; };
n1 -> { n5; n6; n7; n8; } [minlen = 3];
于 2016-08-10T18:42:21.970 に答える