Position des Noeuds GraphViz et Rankdir
j'ai beaucoup de chance avec graphviz et j'ai pu faire presque tous les graphique dont j'ai besoin. J'essaie de dupliquer ceci:
http://en.wikipedia.org/wiki/File:ICS_Structure.PNG
le plus fidèlement que je peux. La partie du bas de ce graphique va de haut en bas et ça marche. Ce que je n'ai pas pu faire est de placer les 3 premiers enfants juste en dessous "Commandant De L'Intervention". Ils branche de gauche et de droite. De plus, notez comment le les bords sont partagés dans les 8 premiers noeuds. Est-ce possible avec dot? Je peux faire face à tout d'autre mais pas les noeuds. Quelqu'un peut me donner un indice pour résoudre ça?
2 réponses
deux techniques utiles pour reproduire la mise en page des graphiques sont:
- noeuds invisibles
- contraintes de rang
voici un essai rapide pour les noeuds supérieurs:
digraph g{
ranksep=0.2;
node[shape=box3d, width=2.3, height=0.6, fontname="Arial"];
n1[label="Incident Commander"];
n2[label="Public Information\nOfficer"];
n3[label="Liaison Officer"];
n4[label="Safety Officer"];
n5[label="Operations Section"];
n6[label="Planning Section"];
n7[label="Logistics Section"];
n8[label="Finance/Admin. Section"];
node[shape=none, width=0, height=0, label=""];
edge[dir=none];
n1 -> p1 -> p2 -> p3;
{rank=same; n2 -> p1 -> n3;}
{rank=same; n4 -> p2;}
{rank=same; p4 -> p5 -> p3 -> p6 -> p7;}
p4 -> n5;
p5 -> n6;
p6 -> n7;
p7 -> n8;
}
Et voici le résultat:
le rendu de Graphviz (point) natif ne supporte pas le style de rendu d'organogramme utilisé dans l'original. Alors qu'il peut générer des bords orthogonaux (comme montré), il n'y a aucun moyen de grouper les bords. La stratification verticale peut être réalisé avec minlen
.
la réponse acceptée est en quelque sorte un abus de la notation, mais tout à fait une approche raisonnable.
graph [splines=ortho]; edge [dir = none];
{ rank = same; n2; n3; }
n1 -> { n2; n3; };
n1 -> n4 [minlen = 2];
{ rank = same; n5; n6; n7; n8; };
n1 -> { n5; n6; n7; n8; } [minlen = 3];