2014-11-23 20 views
6

Ich habe dieses Punktdiagramm und möchte die Knoten A und D, B und E und C und F ausgerichtet werden. Hier ist der Zusammenhang Punktcode:Graphviz Dot vertikale Ausrichtung der Knoten

digraph{ 

A 
B 
C 
D 
E 
F 

{rank = same; B; C} 
{rank = same; E; F} 

A -> B [label="2", weight=2] 
A -> C [label="0", style=dashed, weight=2] 
B -> C [label="0", style=dashed, weight=2] 
B -> D [label="2", style=dashed, weight=2] 
C -> D [label="0", weight=2] 
D -> E [label="1", style=dashed, weight=2] 
D -> F [label="0", weight=2] 
E -> F [label="0", weight=2] 
F -> A 
} 

Wie man sehen kann ich schon versucht, Gewichte an den Kanten gelten, aber das hat nicht funktioniert

enter image description here

Antwort

16

Es ist möglich, die verwenden group Attribut der Knoten, um die Ausrichtung der Kanten zwischen Knoten der gleichen Gruppe in einer geraden Linie vorzuschlagen.

Deklarieren Sie die Knoten mit dem Gruppenattribut:

A [group=g1] 
{rank = same; B[group=g2]; C[group=g3]} 
D [group=g1] 
{rank = same; E[group=g2]; F[group=g3]} 

Dann alle diese Knoten sicherstellen, dass eine (unsichtbare) Kante zwischen ihnen:

edge[style=invis]; 
A -> D 
B -> E 
C -> F 

Alles zusammen:

digraph G { 
    A [group=g1] 
    {rank = same; B[group=g2]; C[group=g3]} 
    D [group=g1] 
    {rank = same; E[group=g2]; F[group=g3]} 

    A -> B [label="2", weight=2] 
    A -> C [label="0", style=dashed, weight=2] 
    B -> C [label="0", style=dashed, weight=2] 
    B -> D [label="2", style=dashed, weight=2] 
    C -> D [label="0", weight=2] 
    D -> E [label="1", style=dashed, weight=2] 
    D -> F [label="0", weight=2] 
    E -> F [label="0", weight=2] 
    F -> A 

    edge[style=invis]; 
    A -> D 
    B -> E 
    C -> F 
}