2013-02-14 37 views
0

我正在處理點文件以呈現節點的分層。使用點語言在Graphviz中分層

我有這個數字就是這個。 (對不起,我沒有足夠的信譽發表圖片..) http://www.flickr.com/photos/[email protected]/8473003861/in/photostream/lightbox/

不過,我想樹(藍色節點)不被壓縮,只佔據一層每棵樹。 http://www.flickr.com/photos/[email protected]/8474093000/in/photostream/lightbox/

我試過$排名=同一$使在同一水平上的黃點,藍點(上一個),但我不能添加更多的:我通過增加無形的節點和多個邊緣,這樣畫出的例子層不插入不可見的節點。

有什麼辦法可以在不同行列之間添加更多圖層沒有添加不可見節點?非常感謝!

回答

2

如果子圖之間沒有連接,則無法控制其定位。在左側的圖例中使用rank=same是一種常見方法,以及將結構強制到佈局中的不可見節點。

如果您只需在兩個節點之間添加最小量的空間,則可以在隱藏邊上使用minlen =屬性強制進行所需的分隔。這也在subgraph cluster ranking in dot中解釋。

這表現在:

digraph { 
    node [label = ""]; 

    A; B; C; D; 
    E [style = invis]; 

    { node [shape = box, label = ""]; 

     1 -> 2; 
     3 -> { 4; 5; 6; 7; 8; 9; 10; 11; 12; }; 5 -> 13; 7 -> 14; 10 -> 15; 12 -> { 16; 17; }; 16 -> 18; 
     19 -> { 34; 35; 36; 37; 38; 39; 40; 41; }; 35 -> 42; 36 -> 43; 40 -> { 45; 46; }; 41 -> 44; 
     20 -> { 21; 22; 23}; 
    } 

    { edge [weight = 10]; 
     A -> B [minlen = 2]; 
     B -> C [minlen = 3]; 
     C -> D [minlen = 3]; 
     D -> E [style = invis]; 
    } 

    { rank = same; A -> 1; } 
    { rank = same; B -> 3; } 
    { rank = same; C -> 19; } 
    { rank = same; D -> 20; } 
} 

最後一棵樹(來自D引用會落在橢圓在左側沒有隱藏E如果這是不能接受的,那麼從一個隱藏的邊緣上述樹中的節點需要被連接到節點20

省略號之間的間距可以與minlen =屬性進行調整。