我想同时渲染多个树,并将所有根节点和所有叶节点放在同一级别上。
这是我正在尝试做的一个例子。根节点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 */
}
得到这个结果,一切都在同一级别。
关于我应该尝试什么的任何建议?我已经确定了根和叶子。
答案 0 :(得分:51)
将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 */
}
...给出了期望的结果:
答案 1 :(得分:4)
理想的结构实际上是等级最大和等级最小。不需要子图或其他任何恶作剧。 GraphViz为此具有明确的功能。
对于复杂的图形,rank = same通常会终止于图形的中间。如果您指的是顶部和底部,请说顶部和底部。
digraph G {
rankdir = TB;
A -> B;
A -> C -> D;
X -> Y;
{ rank=min; A; X; }
{ rank=max; B; D; Y; }
}
答案 2 :(得分:3)