2013-06-06 112 views
0

我寫了一個腳本,動態生成graphviz圖,包含一些集羣。 我想定義聚類的排序順序,因爲當我將圖形可視化時,聚類並不總是按我定義的順序排列。如何在GraphViz中定義集羣的排序順序?

我試圖使用「packmode」和「sortv」屬性,但也許我理解他們的使用不好。下面是一個簡單exameple,在這裏我想對離開集羣B和A簇右:

digraph G { 

    pack=true; 
    packmode="array_u"; 

subgraph cluster_A { 
    sortv=2; 

    node [label="A1"] A1; 
    node [label="A2"] A2; 
    node [label="A3"] A3; 

    A1->A2; 
    A1->A3; 
} 

subgraph cluster_B { 
    sortv=1; 

    node [label="B1"] B1; 
    node [label="B2"] B2; 
    node [label="B3"] B3; 

    B1->B2; 
    B1->B3; 
} 

B1->A1 [constraint="false"]; 
} 

我怎樣才能解決這個問題?提前Tnank!

回答

0

它並不完美,但如果你從集B繪製一個無形的邊緣集羣A,這將地方產業集羣B中簇A的前身,但略高於:

digraph G { 

    pack=true; 
    packmode="array_u"; 

    compound = "true"; 

subgraph cluster_A { 
    sortv=2; 

    node [label="A1"] A1; 
    node [label="A2"] A2; 
    node [label="A3"] A3; 

    A1->A2; 
    A1->A3; 
} 

subgraph cluster_B { 
    sortv=1; 

    node [label="B1"] B1; 
    node [label="B2"] B2; 
    node [label="B3"] B3; 

    B1->B2; 
    B1->B3; 
} 

B1->A1 [constraint="false"]; 

B1 -> A1 
[ 
    ltail = "cluster_B" 
    lhead = "cluster_A" 
    style = "invis" 
] 

} 

只需添加compound=true指令和無形的邊緣。