如何实现graphviz dot的严格反向排名?

时间:2017-11-20 16:13:41

标签: graphviz rank

修改:如果发布了一个新问题则取代此问题。 Align Ranks in Graphviz

首先,让我为发明/滥用标题中的一些术语而道歉。通过" strict"我的意思是相同等级的所有节点在输出图像中需要相同的y位置,而默认情况下它们会稍微移位。第二,通过"反向"我的意思是所有的叶子都是相同的等级,出现在图形底部的同一行,并且所有的祖先都要相应地排列和对齐(不反转边缘方向)。我使用的图是有界半格,因此没有周期性部分,所有节点都有明确的等级。

Abstract Syntax Tree

我尝试了反转边缘方向(" dir = back"可以使边缘看起来像原始方向),但是" strict"部分仍然是一个问题

enter image description here

2 个答案:

答案 0 :(得分:2)

如何将所有树叶放在最低(最高)等级?

您可以包含一个包含所有离开节点的子图,并添加属性rank=max

{
    rank=max;
    leaf1; leaf2; leaf3;
}

这应该将所有叶子节点放在底部。

答案 1 :(得分:1)

我最终更改了生成graphviz的算法,在输出中放置了几个{ rank = same; ... }