web-dev-qa-db-ja.com

Graphvizサブグラフが視覚化されない

ドットで2つのサブグラフを含むグラフを作成しようとしています。コードは次のとおりです。

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

両方のサブグラフの周りにボックスが表示されると思っていました。ここで何が欠けていますか?

58
halfdan

サブグラフの名前の前にclusterを付ける必要があります。

subgraph clusterstep1 {

そして

subgraph clusterstep2 {

スタイルとラベルを取得するため。

graphizドキュメントのセクション「サブグラフとクラスター」 から:

サブグラフの3番目の役割は、特定のレイアウトエンジンによってグラフがどのようにレイアウトされるかを直接含みます。 サブグラフの名前がclusterで始まる場合、Graphvizはサブグラフを特別なクラスターサブグラフとして記録します。サポートされている場合、レイアウトエンジンは、クラスターに属するノードが一緒に描画されるようにレイアウトを行い、クラスターの描画全体が境界の四角形に含まれます。良い点と悪い点については、クラスターサブグラフはDOT言語の一部ではなく、特定のレイアウトエンジンが準拠している構文規則にすぎないことに注意してください。

111
marapet