web-dev-qa-db-ja.com

GraphViz Node Placement and Rankdir

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

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

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

42
simusid

グラフのレイアウトを再現するための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;
}

そしてここに結果があります:

dot layout top nodes

123
marapet