2010-06-09 4 views
18

Sto cercando di avere un vantaggio tra i cluster in Graphviz in cui il bordo non influisce sulla classifica.Straight edge between cluster in Graphviz

Questo sembra a posto:

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

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

Tuttavia quando aggiungo un'etichetta al bordo C -> D bordo B -> C mira ad eludere detto etichetta (che sembra brutto).

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

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

Qualsiasi idea di come posso mantenere il bordo B-C dritto?

risposta

26

Il modo più semplice per raggiungere questo è aggiungere splines=false al file punto - questo forza il file il rendering dei bordi di essere linee rette:

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

subgraph clusterY { 
    C; 
    D; 
} 

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

uscita:

graphviz output

2

È possibile utilizzare questa versione:

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

quindi si utilizza neato (non dot)

neato -Tpng -oyadda.png yadda.dot 

e il risultato è:

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

+0

con neato non ho ricevuto più le scatole a grappolo. Destra? – towi