如何实现graphviz点的严格反向排序?

如何实现graphviz点的严格反向排序?,graphviz,rank,Graphviz,Rank,编辑:如果发布了一个新问题以取代此问题 首先,请允许我为在标题中编造/滥用一些术语而道歉。我所说的“严格”是指相同秩的所有节点在输出图像中需要相同的y位置,而默认情况下,它们会稍微移动。第二,我所说的“反转”是指所有的叶子都是相同的等级,出现在图表底部的同一行,它们的所有祖先都将被相应地排列和对齐(不反转边缘方向)。我正在处理的图是有界半格,因此没有循环部分,所有节点都有一个定义良好的秩 我尝试反转边缘方向(并且“dir=back”可以使边缘看起来像原始方向),但是“strict”部分仍然是一

编辑:如果发布了一个新问题以取代此问题

首先,请允许我为在标题中编造/滥用一些术语而道歉。我所说的“严格”是指相同秩的所有节点在输出图像中需要相同的y位置,而默认情况下,它们会稍微移动。第二,我所说的“反转”是指所有的叶子都是相同的等级,出现在图表底部的同一行,它们的所有祖先都将被相应地排列和对齐(不反转边缘方向)。我正在处理的图是有界半格,因此没有循环部分,所有节点都有一个定义良好的秩

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


如何将所有叶子放在最下面(最大)的位置?

可以包括包含所有离开节点的子图,并添加属性:


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

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

在第一个图形中,我看不到不在同一y坐标上的同一列的两个节点?这对于叶子来说非常有效,但是这些叶子的祖先仍然处于错误的等级。
{
    rank=max;
    leaf1; leaf2; leaf3;
}