web-dev-qa-db-fra.com

Le sous-graphique de Graphviz n'est pas visualisé

J'essaie de créer un graphique avec deux sous-graphiques en point. Le code est comme suit:

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";
}

Le résultat que j'obtiens ressemble à ceci:

Result of above code

Je m'attendais à voir une boîte autour des deux sous-graphiques. Qu'est-ce que j'oublie ici?

58
halfdan

Vous devrez préfixer le nom de vos sous-graphes avec cluster:

subgraph clusterstep1 {

et

subgraph clusterstep2 {

afin d'obtenir le style et l'étiquette.

De la documentation graphiz, section "Sous-graphiques et clusters" :

Le troisième rôle des sous-graphiques implique directement la façon dont le graphique sera présenté par certains moteurs de présentation. Si le nom du sous-graphique commence par cluster, Graphviz note le sous-graphique comme un sous-graphique de cluster spécial . S'il est pris en charge, le moteur de mise en page fera la mise en page de sorte que les nœuds appartenant au cluster soient dessinés ensemble, avec le dessin entier du cluster contenu dans un rectangle englobant. Notez que, pour le meilleur et pour le pire, les sous-graphiques de cluster ne font pas partie du langage DOT, mais uniquement une convention syntaxique respectée par certains des moteurs de disposition.

111
marapet