2010-06-09 15 views
18

Ich versuche, eine Kante zwischen Clustern in Graphviz zu haben, wo die Kante das Ranking nicht beeinflusst.Gerade Kante zwischen Clustern in Graphviz

Dies sieht gut aus:

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

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

jedoch, wenn ich ein Etikett an der Kante C -> D hinzuzufügen versucht der B -> C Rand des Etiketts zu umgehen (was hässlich aussieht).

digraph { 
    subgraph clusterX { 
    A  
    B 
    } 

    subgraph clusterY { 
    C 
    D 
    } 

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

Jede Idee, wie ich den Rand B-C gerade halten kann?

Antwort

26

Der einfachste Weg, erreichen dies ist splines=false zu der Dot-Datei hinzufügen - das zwingt die Wiedergabe der Kanten gerade Linien sein:

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

subgraph clusterY { 
    C; 
    D; 
} 

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

Ausgang:

graphviz output

2

Sie diese Version verwenden können:

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

Sie dann neato verwenden (nicht dot)

neato -Tpng -oyadda.png yadda.dot 

Und das Ergebnis ist:

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

+0

mit neato ich nicht mehr die Cluster-Boxen bekommen. Recht? – towi

Verwandte Themen