如何在graphviz中垂直对齐子图中的特定节点

如何在graphviz中垂直对齐子图中的特定节点,graphviz,dot,Graphviz,Dot,我正在尝试生成一个漂亮的对齐图,其中每个s_I位于d_I之下。这是我的代码: digraph G { rankdir="LR" graph [bgcolor="#EAEAF2" fontname="Noto Sans", colorscheme=gnbu3] node [fontname="Noto Sans" style=filled, colorscheme=gnbu3] edge [fontname="Noto Sans"] node[fontn

我正在尝试生成一个漂亮的对齐图,其中每个s_I位于d_I之下。这是我的代码:

digraph G {
    rankdir="LR"

    graph [bgcolor="#EAEAF2" fontname="Noto Sans", colorscheme=gnbu3]
    node [fontname="Noto Sans" style=filled, colorscheme=gnbu3]
    edge [fontname="Noto Sans"]

    node[fontname="Noto Sans"];
    subgraph cluster_1 {
        node [style=filled, color=1];
        edge [style="invis"];
        s3[group=3];
        s0 -> s1 -> s2 -> s3;
        label = "Raw signal";
        color=2;
    }

    subgraph cluster_0 {
        color=lightgrey;
        node [style=dotted,color=""];
        edge [style="invis"];
        d0[label="..."]
        d1[label="..."]
        d2[label="..."]
        d3[label="...", group=f]
        label = "CNN";
        d0 -> d1 -> d2 -> d3;
    }
    edge[style=dotted, weight=10000]
    s0 -> d0;
    s1 -> d1;
    s2 -> d2;
    s3 -> d3;
}
我得到的不是:

如果我尝试添加:

{rank=same s0->d0}; 

s0和d0节点已对齐,但它们脱离了子簇

只需更改子图的顺序(首先是簇0),并将线
边[style=虚线,weight=10000]
更改为
边[style=虚线,constraint=false]

这将使子图按正确的顺序排列(外观),并防止2个子图节点之间的边对排名产生影响