2012-03-23 9 views
2

Ich habe zwei überlappenden Kanten und weiß nicht, warum:Überlappende Kanten in graphviz

digraph G { 
    graph [rankdir=LR, overlap=false]; 
    subgraph cluster1 { 
     d1; 
     n1; 
    } 
    subgraph cluster2 { 
     n2; 
     d2; 
    } 
    n1 -> n2; 
    n2 -> n1; 
    d0 -> d1; 
    d0 -> d2; 
} 

enter image description here

Gibt es eine Möglichkeit, beide Kanten n1 -> n2 und n2 -> n1 separat angezeigt werden? die Cluster zu entfernen, ist eine Option, nicht aber helfen würde ...

Antwort

3

Test-and-error-Lösung (fragen Sie mich nicht, warum das funktioniert ...): viel sehr bisher

digraph G { 
    graph [rankdir=LR, overlap=false]; 
    subgraph cluster1 { 
     d1; 
     n1; 
    } 
    subgraph cluster2 { 
     n2; 
     d2; 
    } 
    n1 -> n2; 
    n1 -> n2[constraint=false, dir=back]; 
    n2 -> n1[style=invis]; 
    d0 -> d1; 
    d0 -> d2; 
} 

graphviz output

+1

Was für ein Hack. Aber es funktioniert. – Steffen

4

Eine Lösung, der von der portPos Modifikator:

digraph G { 
    graph [rankdir=LR, overlap=false]; 
    subgraph cluster1 { 
     d1; 
     n1; 
    } 
    subgraph cluster2 { 
     n2; 
     d2; 
    } 
    n1:sw -> n2:nw; 
    n2:ne -> n1:se; 
    d0 -> d1; 
    d0 -> d2; 
} 

Eine andere Lösung ist die Verwendung des Richt und color Modifikatoren zu machen:

digraph G { 
    graph [rankdir=LR, overlap=false]; 
    subgraph cluster1 { 
     d1; 
     n1; 
    } 
    subgraph cluster2 { 
     n2; 
     d2; 
    } 
    n2 -> n1[dir=both color="red:blue"]; 
    d0 -> d1; 
    d0 -> d2; 
} 

Sie können sogar color="black:black" verwenden, wenn Sie das Schwarz-Weiß-Farbschema beibehalten möchten.

+0

Thank you! Ich brauche diese zwei Kanten, aber eine zweite Lösung war interessant zu wissen. Die erste Lösung ist begrenzt. Bitte schauen Sie sich an: Digraph G { graph [rankdir = LR, overlap = false]; Untergraph cluster1 { d1; n1; } Untergraph Cluster3 { d3; n3; } Untergraph cluster2 { n2; d2; } n1: se -> n2: ne [Farbe = grün]; n2 -> n1 [Farbe = rot]; d0 -> d1; d0 -> d2; d0 -> d3 } – Steffen