2017-08-07 2 views
-2

image.dotEn Graphviz (langage des points) ce que je peux faire pour obtenir des nœuds de manière horizontale. J'utilise rankdir = LR mais quand j'utilise dans le sous-graphe cela ne fonctionne pas

Je suis débutant en utilisant Graphviz. que puis-je faire pour obtenir comme ça? Pouvez-vous les gars s'il vous plaît aidez-moi, Merci d'avance.

+0

Bienvenue sur SO. S'il vous plaît ** visitez ** le ** [centre d'aide] (http://stackoverflow.com/tour) ** et faites le tour pour voir quoi et comment demander. ASTUCE: Codes postaux et efforts - –

+0

J'aime aider les questions GraphViz, mais j'ai besoin de voir ce que vous avez essayé pour vous aider. S'il vous plaît poster votre fichier DOT afin que nous puissions vous aider. – TomServo

Répondre

0

Utilisez « même » rang pour construire des colonnes de nœuds en cluster

Utilisez « invisibles » flèches « allign » noeuds supérieurs à chaque groupe dans une

brute

Utilisez « newrank = true » et « { rank = same ...} "pour tous les nœuds supérieurs de chaque premier cluster de chaque brut. Si vous ne le faites pas, votre graphique se décomposera en supprimant les liens vers un nœud de départ.

digraph G { 

    rankdir=LR; 
    newrank=true; 

    subgraph cluster_a { 
     subgraph cluster_a0 { 
      rank=same; 
      a00;a01;a02;a03; 
     } 
     subgraph cluster_a1 { 
      rank=same; 
      a10;a11;a12; 
     } 
    } 

    subgraph cluster_b { 
     subgraph cluster_b0 { 
      rank=same; 
      b00;b01; 
     } 
     subgraph cluster_b1 { 
      rank=same; 
      b10;b11;b12;b13; 
     } 
     subgraph cluster_b2 { 
      rank=same; 
      b20;b21;b22; 
     } 
    } 

    subgraph cluster_c { 
     subgraph cluster_c0 { 
      rank=same; 
      c00;c01; 
     } 
    } 

    first -> second; 

    second -> a00; 
    second -> b00; 
    second -> c00; 

    a00 -> a10 [style=invisible, arrowhead=none]; 
    b00 -> b10 -> b20 [style=invisible, arrowhead=none]; 

    {rank=same a00 b00 c00} 
} 

enter image description here

+0

Vous pouvez également ajouter 'compound = true;' et 'second -> a00 [lhead = cluster_a0];' pour laisser la flèche pointer non pas sur le noeud mais sur le cluster. – slk