在Graphviz(点语言)中我可以做什么来获得节点水平方式。我使用的是rankdir = LR但是当我在子图中使用它时它不起作用

时间:2017-08-07 11:46:39

标签: graphviz dot

image.dot

我是初学者使用Graphviz。我能做些什么来得到这样的?你能帮助我吗,先谢谢你。

1 个答案:

答案 0 :(得分:1)

使用“相同”排名从群集节点构建列

使用“不可见”箭头“对齐”行中每个群集的顶部节点

对每行中每个第一个群集的所有顶级节点使用“newrank = true”和“{rank = same ...}”。如果您不这样做,您的图表将通过删除指向起始节点的链接而崩溃。

digraph G {

    rankdir=LR;
    newrank=true;

    subgraph cluster_a {
        subgraph cluster_a0 {
            rank=same;
            a00;a01;a02;a03;
        }
        subgraph cluster_a1 {
            rank=same;
            a10;a11;a12;
        }
    }

    subgraph cluster_b {
        subgraph cluster_b0 {
            rank=same;
            b00;b01;
        }
        subgraph cluster_b1 {
            rank=same;
            b10;b11;b12;b13;
        }
        subgraph cluster_b2 {
            rank=same;
            b20;b21;b22;
        }
    }

    subgraph cluster_c {
        subgraph cluster_c0 {
            rank=same;
            c00;c01;
        }
    }

    first -> second;

    second -> a00;
    second -> b00;
    second -> c00;

    a00 -> a10 [style=invisible, arrowhead=none];
    b00 -> b10 -> b20 [style=invisible, arrowhead=none];

    {rank=same a00 b00 c00}
}

enter image description here