我在 graphviz 上运气很好,几乎可以制作出我需要的每一张图。我试图复制这个:
http://en.wikipedia.org/wiki/File:ICS_Structure.PNG
尽我所能。该图的底部全部从上到下流动,我已经很好地工作了。我无法将前 3 个孩子放在“事件指挥官”的正下方。它们左右分支。另外请注意边是如何在前 8 个节点中共享的。点可以吗?我可以处理其他所有事情,但不能处理那些顶级节点。有人可以给我一个线索来解决这个问题吗?
我在 graphviz 上运气很好,几乎可以制作出我需要的每一张图。我试图复制这个:
http://en.wikipedia.org/wiki/File:ICS_Structure.PNG
尽我所能。该图的底部全部从上到下流动,我已经很好地工作了。我无法将前 3 个孩子放在“事件指挥官”的正下方。它们左右分支。另外请注意边是如何在前 8 个节点中共享的。点可以吗?我可以处理其他所有事情,但不能处理那些顶级节点。有人可以给我一个线索来解决这个问题吗?
复制图形布局的两种有用技术是:
这是顶级节点的快速尝试:
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;
}
结果如下:
原生 Graphviz(点)渲染不支持原版中使用的器官图渲染样式。虽然它可以生成正交边(如图所示),但无法自动对边进行分组。垂直分层可以用 来实现minlen
。
公认的答案有点滥用符号,但完全是一种合理的方法。它可能很难实现自动化,推荐的 WYSIWIG 替代方案可能是最简单的。
对提供的解决方案的更改是:
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];