2011-09-28 7 views
45

私はドット内に2つのサブグラフを持つグラフを作成しようとしています。コードは以下の通りである:Graphvizサブグラフが可視化されない

digraph G { 
     subgraph step1 { 
       style=filled; 
       node [label="Compiler"] step1_Compiler; 
       node [label="Maschine"] step1_Maschine; 
       color=lightgrey; 
     } 

     subgraph step2 { 
       style=filled; 
       color=lightgrey; 
       node [label="Interpretierer"] step2_Interpretierer; 
       node [label="Maschine"] step2_Maschine; 
       label="Virtuelle Maschine"; 
     } 

     "Programm (Java)" -> step1_Compiler; 
     step1_Compiler -> step1_Maschine; 
     step1_Maschine -> "Bytecode"; 
     "Bytecode" -> step2_Interpretierer; 
     step2_Interpretierer -> step2_Maschine; 
     step2_Maschine -> "Ergebnis"; 
} 

私は次のようなルックスを取得しています結果:

Result of above code

私は両方の部分グラフの周りにボックスを確認すると予想しました。私はここで何が欠けていますか?

答えて

93

あなたはクラスタであなたの部分グラフの名前の前に付ける必要があります:

subgraph clusterstep1 { 

subgraph clusterstep2 { 

をスタイルとラベルを取得するために。 graphiz documentation, section "Subgraphs and Clusters"から

:サブグラフため

第三の役割を直接グラフは、特定のレイアウトエンジンによって をレイアウトする方法を含みます。 サブグラフの名前がクラスタで で始まる場合、Graphvizはサブグラフを特別なクラスタ サブグラフとして認識します。サポートされている場合、レイアウトエンジンは、 のクラスタに属するノードが一緒に描画され、クラスタの 図面全体が境界矩形内に含まれます。ノート は、良いか悪いかにかかわらず、クラスターサブグラフはDOT 言語の一部ではなく、特定の レイアウトエンジンによって守られた構文上の唯一のコンベンションです。

+0

したがって、サブグラフとサブグラフcluster *はどちらもレイアウトアルゴリズムの下でビジュアルグループになりますか? – Chris

+0

ありがとうございます。 – sjas

関連する問題