强制节点直接位于另一个节点之下

Dav*_*ong 4 graph dot graphviz

我有一张从左到右排列的图表.但是,这个图的某些元素我想要相对于另一个节点定位.例如,如果我有这个图:

digraph "Test" {
    rankdir = "LR"
    A -> B
    B -> C
    D -> B
    note -> B

    note [ shape="house" ]
};
Run Code Online (Sandbox Code Playgroud)

它呈现如下:

正常的DOT布局

但是,我希望"note"节点始终直接位于它指向的节点下面,就像这个(手动创建的)图形一样:

期望的DOT布局

我试着用不同的子图试验rankdir,并摆弄rankconstraint属性,但一直在得到这个工作,因为我只用DOT玩弄了几天的失败.

mar*_*pet 5

以下是您可以执行的操作:在定义边之前枚举节点,并通过将节点放在子图中将节点约束A到与节点相同的等级:note

digraph "Test" {
    rankdir = "LR"
    A;D;
    {rank=same; note; B;}
    C;

    A -> B
    B -> C
    D -> B
    B -> note [dir=back]

    note [ shape="house" ]
};
Run Code Online (Sandbox Code Playgroud)

请注意,为了让节点note位于节点下方A,我必须反转边缘方向并添加dir=back以正确绘制箭头.

graphviz输出

  • +1这被证明是其结果中最一致的,并且给了我一些东西.谢谢!:) (2认同)