2011-09-28 11 views
45

Sto provando a creare un grafico con due sottografi in punto. Il codice è il seguente:Il sottografo Graphviz non viene visualizzato

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

Il risultato che sto ottenendo è simile al seguente:

Result of above code

mi aspettavo di vedere un riquadro intorno ad entrambi sottografi. Cosa mi manca qui?

risposta

93

Dovrete prefisso al nome del vostro sottografi con grappolo:

subgraph clusterstep1 { 

e

subgraph clusterstep2 { 

al fine di ottenere lo stile e l'etichetta.

Dal graphiz documentation, section "Subgraphs and Clusters":

La terza ruolo per sottografi coinvolge direttamente come il grafico sarà tracciato da alcuni motori di layout. Se il nome del sottografo inizia con con cluster, Graphviz rileva il sottografo come un cluster speciale sottografo. Se supportato, il motore di layout eseguirà il layout in modo che i nodi associati al cluster vengano disegnati insieme, con l'intero disegno del cluster contenuto in un rettangolo di delimitazione. Nota: che, per il bene e il male, i sottografi del cluster non fanno parte del linguaggio DOT , ma solo una convenzione sintattica rispettata da alcuni dei motori di layout .

+0

Quindi il sottografo e il grafo del sottogrado * generano entrambi un raggruppamento visivo sotto gli algoritmi di layout? – Chris

+0

Grazie mille. – sjas

Problemi correlati