2010-06-09 25 views
18

J'essaie d'avoir un bord entre les grappes dans Graphviz où le bord n'affecte pas le classement.Straight edge entre les grappes dans Graphviz

Cela ressemble bien:

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

    A -> B 
    B -> C [constraint=false] 
    C -> D 
} 

Cependant quand j'ajoute une étiquette au bord C -> D bord B -> C tente de contourner ladite étiquette (ce qui semble laid).

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

    A -> B 
    B -> C [constraint=false] 
    C -> D [label=yadda] 
} 

Toute idée comment je peux garder le bord B-C droit?

Répondre

26

La meilleure façon de atteindre ceci est d'ajouter splines=false au fichier de points - ce qui oblige le rendu des bords à des lignes droites:

digraph { 
splines=false; 
subgraph clusterX { 
    A; 
    B; 
} 

subgraph clusterY { 
    C; 
    D; 
} 

A -> B; 
B -> C [constraint=false]; 
C -> D [label=yadda]; 
} 

Sortie:

graphviz output

2

Vous pouvez utiliser cette version:

digraph G { 
    subgraph cluster_X { 
    A [ pos = "0,1!" ]; 
    B [ pos = "0,0!" ]; 
    } 
    subgraph cluster_Y { 
    C [ pos = "1,1!" ]; 
    D [ pos = "1,0!" ]; 
    } 
    A -> B 
    B -> C[label="yadda"] 
    C -> D; 
} 

Ensuite, vous utilisez Neato (non dot)

neato -Tpng -oyadda.png yadda.dot 

Et le résultat est:

alt text http://dl.dropbox.com/u/72629/yadda.png

+0

avec neato Je ne reçois pas les boîtes de cluster plus. Droite? – towi