如何避免 Graphviz 点布局浪费空间,具有相同等级的不同大小的节点?

Red*_*ela 6 dot graphviz

当一个graphviz有向图最适合使用点排列时,有没有办法解决一个大节点在相同等级的其他节点周围创建多余填充的问题?

例如,使用下图:

digraph {
    b[label="line 1\nline 2\nline 3\nline 4\nline 5\nline 6\n"];

    a -> b;
    a -> c;
    b -> f;
    c -> d;
    d -> e;
    e -> f;
}
Run Code Online (Sandbox Code Playgroud)

(以上结果)

由于左侧路径增加了在右侧路径中不需要如此高的等级的高度,因此该图显然比需要的要高。

有没有办法分别对两条路径进行布局?我认为使用集群子图可能会有所帮助,但即使在这种情况下,排名高度似乎也是完全全局的。

我希望得到类似于此图像编辑的结果(请原谅它的粗鲁): 在此处输入图片说明

use*_*813 4

作为解决方法,您可以尝试添加edge[constraint = false];. 这将为所有边
设置属性值:constraint

渲染图

或者constraint仅指定某些的属性。


编辑:在子图的帮助下我们可以实现非常接近的结果:

digraph {

    rankdir = LR;

    b[label="line 1\nline 2\nline 3\nline 4\nline 5\nline 6\n"];

    subgraph cluster_0 {

        rank = same;

        style = invis;

        a -> c -> d -> e -> f [constraint = false];

    }

    a -> b;
    b -> f;

}
Run Code Online (Sandbox Code Playgroud)

将呈现如下:

渲染图