2017-04-25 64 views
0

我正在嘗試生成漂亮的對齊圖,其中每個s_i都在d_i下面。這是我的代碼:如何在graphviz中垂直對齊子圖中的特定節點

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; 
} 

我得到的是什麼,但: http://imgur.com/MG0xtS3

如果我嘗試添加:

{rank=same s0->d0}; 

S0和D0節點變得一致,但他們掉出子羣集

回答

1

只需更改子圖的順序(第一個cluster_0),並將edge[style=dotted, weight=10000]行更改爲edge[style=dotted, constraint=false]

這將使子圖形成正確的順序(外觀),並防止2個子圖節點之間的邊緣對排名產生影響。