2015-10-23 89 views
1

我試圖使用dot來同時使用羣集來繪製幾個未連接的圖形,並在每個圖形周圍繪製樣式框。如何停止GraphViz點使我的集羣更緊湊?

問題是,雖然在沒有集羣的渲染上,佈局非常整潔,並且在一個集羣內分隔出非連接的圖形,但是一旦我嘗試使用集羣,它們會一起壓縮這些集合,使用更少的空間,但渲染輸出要少得多顯然是可以理解的(特別是一旦它開始包裝不同大小的標籤)。

這裏有沒有聚集的版本:

Graph without Clustering

而且這裏是:

Graph with Clustering

和源 - 獲得無羣集的版本我剛剛刪除的 「R」關閉「羣集」的結尾。

digraph G { 
    node[shape="rectangle",fontname="Nimbus Sans"]; 

    subgraph cluster_a { 
    style=filled; 
    bgcolor=lightgrey; 
    node [style=filled,color=white]; 
    a_vq; a_lvt; a_wvw; a_yvy; 
    a_zgxl; a_hqz; a_yqq; a_zofv; 
    a_qvr; a_qlz; a_ycr; a_ilq; 
    a_ouw; a_ryq; a_lgl; a_qvr->a_lgl; 
    a_kwr; a_qlz->a_kwr; a_yl; a_ilq->a_yl; 
    a_kgyr; a_hqz->a_kgyr; a_llq; a_ryq->a_llq; 
    a_llo; a_ryq->a_llo; a_ll; a_ryq->a_ll; 
    a_ito; a_ll->a_ito; a_rql; a_lgl->a_rql; 
    a_ier; a_kwr->a_ier; a_lql; a_yl->a_lql; 
    a_vhgp; a_lql->a_vhgp; 

    a_vq->a_lvt; 
    a_lvt->a_wvw; 
    a_lvt->a_yvy; 
    a_vq->a_zgxl; 
    a_hqz->a_yqq; 
    a_lvt->a_zofv; 
    a_yvy->a_qvr; 
    a_zgxl->a_qlz; 
    a_zgxl->a_ycr; 
    a_ycr->a_ilq; 
    a_hqz->a_ouw; 
    a_yqq->a_ryq; 

} 

    subgraph cluster_b { 
    style=filled; 
    bgcolor=lightgrey; 
    node [style=filled,color=white]; 
    b_uel; 
    } 
} 

我試着在一些地方的packmode屬性擺弄,但它只是似乎使造型沒有固定的問題,我不能完全肯定是否會解決任何事情,即使它的工作正常。

我想保留整齊,空間分離的圖形與聚類佈局 - 有誰知道這是否可以完成?

+0

收盤'}'失蹤了。已嘗試過各種方法,但迄今尚未成功。嵌套'子圖'是不可能的,並且向邊添加'weight'不會有幫助。 – vaettchen

回答

1

更多的黑客比真實的答案,但它適用於您的示例 - 使用隱形節點和邊緣。我也簡化了你的代碼,不確定這是否適合你的任務,但它使查看更容易。

digraph G 
{ 
    node[ shape = "rectangle", fontname = "Nimbus Sans", height = .5, width = 1 ]; 

    subgraph cluster_a 
    { 
     style = filled; 
     bgcolor = lightgrey; 

     node[ style = invis ];      // create 
     inv_1; inv_2;        // invisible nodes 

     node[ style = filled, color = white ]; 
     // first unconnected graph 
     a_hqz -> { a_ouw a_yqq a_kgyr }   
     a_ouw -> { inv_1 }  [ style = invis ] // insert invisible nodes 
     a_kgyr -> { inv_2 }  [ style = invis ] // using invisible edges 
     a_yqq -> a_ryq; 
     a_ryq -> { a_llq a_llo a_ll } 
     a_ll -> a_ito; 
     // second unconnected graph 
     a_vq -> { a_lvt a_zgxl } 
     a_lvt -> { a_wvw a_yvy a_zofv } 
     a_zgxl -> { a_qlz a_ycr } 
     a_yvy -> a_qvr -> a_lgl -> a_rql; 
     a_qlz -> a_kwr -> a_ier; 
     a_ycr -> a_ilq -> a_yl -> a_lql -> a_vhgp;  
    } 

    subgraph cluster_b 
    { 
     style = filled; 
     bgcolor = lightgrey; 
     node[ style = filled, color = white ]; 
     b_uel; 
    } 
} 

enter image description here