我想同时渲染多个树,并将所有根节点和所有叶节点放在同一级别上.
这是我正在尝试做的一个例子.根节点A和X在同一级别上,叶节点B,D和Z也是如此.

我没有成功尝试将根放在一个等级中,然后留下另一个等级,如下所示:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
rank = same; A; X;
rank = same; B; D; Y;
} /* closing subgraph */
}
Run Code Online (Sandbox Code Playgroud)
并且在一切都处于相同等级的情况下得到了这个结果.

关于我应该尝试什么的任何建议?我已经确定了根和叶子.
Sim*_*mon 55
将rank = same; ...语句放在括号中,例如:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
// note that rank is used in the subgraph
{rank = same; A; X;}
{rank = same; B; D; Y;}
} /* closing subgraph */
}
Run Code Online (Sandbox Code Playgroud)
...给出了期望的结果:

这是一个受@William John Holden 评论启发的简单示例 -
graph {
rankdir=LR;
a -- b -- c;
d -- e -- f;
b -- d; {rank = same; b; d;};
}
Run Code Online (Sandbox Code Playgroud)
理想的结构实际上是 rank max 和 rank min。不需要子图或任何其他恶作剧。GraphViz 对此有明确的设施。
对于复杂的图形,rank=same 通常会在图形的中间附近结束。如果您指的是顶部和底部,请说顶部和底部。
digraph G {
rankdir = TB;
A -> B;
A -> C -> D;
X -> Y;
{ rank=min; A; X; }
{ rank=max; B; D; Y; }
}
Run Code Online (Sandbox Code Playgroud)