2012-11-12 17 views
9

私はしばらくこのことに苦労しており、まっすぐ答えを見つけることはできないようです。私はgraphvizで複合サブグラフを扱っており、2つのサブグラフを互いに整列させるための正しい組み合わせの設定を見つけることはできないようです。graphvizに固定サイズの部分グラフを生成させるにはどうすればよいですか?

同封は

digraph g { 
    compound=true; 

    subgraph cluster_top { 
    graph [color=black, label="Top", rank=min]; 

    nodeA; nodeB; nodeC 
    cluster_top_DUMMY [shape=point style=invis] 
    } 

    subgraph cluster_service { 
    graph [color=black, label="Bottom", rank=min]; 
    node1; node2; node3; node4; node5; extra_long_node 
    cluster_bottom_DUMMY [shape=point style=invis] 
    } 
    cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ] 
} 

これは、トップ部分グラフよりもかなり広いボトム部分グラフで出力を生成します...問題を示すための簡単な例です。

enter image description here

トップとボトムの両方が常に正確に同じ幅であることを保証するためには何を私が本当に欲しいのです。さらに、使用可能な幅に収まるノードが多すぎると、追加のノード行が生成されます。

答えて

2

可能な(悪いですが機能する)ソリューションは、目に見えないノードを使用して幅を設定することです。 次のことを考えてみましょう:

digraph g { 
    compound=true; 

    subgraph cluster_top { 
     graph [color=black, label="Top", rank=min]; 

     nodeAI0 [style=invisible] 
     nodeAI1 [style=invisible] 
     nodeAI2 [style=invisible,fixedsize=true,width=1.65] 
     nodeA; nodeB; nodeC 
     cluster_top_DUMMY [shape=point style=invis] 
    } 

    subgraph cluster_service { 
     graph [color=black, label="Bottom", rank=min]; 
     node1; node2; node3; node4; node5; extra_long_node 
     cluster_bottom_DUMMY [shape=point style=invis] 
    } 
    cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ] 
} 

enter image description here

見えないノード(NodeAI0-NodeAI2)はスペースを取ります。 fixedsize = true、width = 1.65は最後のものを正確に1.65インチにします。

別の、より良い解決策はまた、のようなものを追加することによって、(正しい値を探しすることを避けるために)特に関連長いノードを設定するには、次のようになります。化合物=真の部分の後に

node [fixedsize=true,width=0.75] 

関連する問題