GraphViz节点位置和Rankdir

sim*_*sid 41 dot graphviz

我对graphviz运气很好,并且能够制作出我需要的几乎所有图表.我想复制这个:

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

尽我所能.该图的底部全部从上到下流动,我的工作正常.我无法做的是将前三个孩子放在"事件指挥官"的正下方.他们左右分支.另请注意前8个节点中的边缘是如何共享的.点可能吗?我可以处理其他一切,但不能处理那些顶级节点.有人能给我一个解决这个问题的线索吗?

mar*_*pet 120

用于再现图形布局的两种有用技术是:

  • 不可见的节点
  • 排名限制

以下是对顶级节点的快速尝试:

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;
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

点布局顶部节点

  • @HeyWatchThis无需明确定义每个节点 - 节点在第一次出现时定义.如您所见,我首先定义可见节点,然后为将在此点之后定义的所有节点设置默认节点属性(`node [shape = none,...]`).由于所有`p`节点都出现在该行之后,因此它们都具有`shape = none`. (6认同)
  • 这是p1,p2,p3,..定义的?我错过了什么吗? (3认同)
  • 我很高兴它有帮助!(因为这是你的第一个问题:如果这是你正在寻找的东西,不要忘记upvote/accept.)你找不到这样的布局的原因是graphviz不是真正理想的工具来创建这样的图表 - 如果你需要100%控制布局,一些wysiwyg程序可能更容易使用. (2认同)