2009-10-12 7 views
18

Je dispose d'un fichier graphique comme celui-ci:GraphViz - Comment avoir un sous-graphe de gauche à droite lorsque le graphique principal est de haut en bas?

digraph { 
    "Step1" -> "Step2" -> "Step3"; 

    subgraph step2detail { 
     "Step2" -> "note1"; 
     "Step2" -> "note2"; 
     "Step2" -> "note3"; 
     "Step2" -> "note4"; 
     rankdir=TB 
    } 
} 

Je veux que le step2detail de sous-graphe pour accrocher à droite de « Etape 2 ».

En ce moment, il ressemble à ceci:

enter image description here

Je veux Etape 1, Etape 2 et Etape 3 à tous verticalement sous l'autre et dans une colonne.

Répondre

5

En regroupant les nœuds étape dans un sous-graphe en cluster, la sortie se présente comme suit:

digraph { 
    subgraph cluster_0 { 
     color=invis; 
     "Step1" -> "Step2" -> "Step3"; 
    } 

    subgraph cluster_1 { 
     color=invis; 
     "Step2" -> "note4"; 
     "Step2" -> "note3"; 
     "Step2" -> "note2"; 
     "Step2" -> "note1"; 
    } 
} 

http://i45.tinypic.com/2pyu7pk.jpg

color=invis supprime la frontière qui serait autrement établi autour du cluster

-3

Utilisez le commande: rankdir = LR;

digraph { 
rankdir=LR; 

    "Step1" -> "Step2" -> "Step3"; 

    subgraph step2detail { 
     "Step2" -> "note1"; 
     "Step2" -> "note2"; 
     "Step2" -> "note3"; 
     "Step2" -> "note4"; 
     rankdir=TB 
    } 

} 
+0

ok, mais il semble bizarre; step1 -> step2 -> step3 ne sont pas dans la même position verticale –

+6

Changer le rankdir d'un sous-graphe ne semble rien changer = \ –

8

L'astuce pour obtenir le graphique que vous avez décrit est d'utiliser deux sous-graphes et de les lier de l'un à l'autre. Les bords invisibles dans les "détails" sont ce qui garde les notes alignées.

digraph { 
    rankdir="LR"; 

    subgraph steps { 
     rank="same"; 
     "Step1" -> "Step2" -> "Step3"; 
    } 

    subgraph details { 
     rank="same"; 
     edge[style="invisible",dir="none"]; 
     "note1" -> "note2" -> "note3" -> "note4"; 
    } 

    "Step2" -> "note1"; 
    "Step2" -> "note2"; 
    "Step2" -> "note3"; 
    "Step2" -> "note4"; 
} 
+2

Je ne sais pas ce que le questionneur original avait en tête, mais cela donne ce que j'imagine vouloir en fonction de la description de la question - et je * pense * m'aidera à obtenir ce que je veux pour mon propre graphique. :) – lindes

4

est ici aussi simple que cela - il suffit d'utiliser l'attribut group avoir graphviz préfèrent droits bords:

digraph { 
    node[group=a, fontname="Arial", fontsize=14]; 
    "Step1" -> "Step2" -> "Step3"; 

    node[group=""]; 
    "Step2" -> "note1"; 
    "Step2" -> "note2"; 
    "Step2" -> "note3"; 
    "Step2" -> "note4"; 
} 

graphviz output

Questions connexes