2014-11-23 14 views
6

Mam ten wykres punktowy i chcę, aby węzły A i D, B i E oraz C i F były wyrównane. Oto kod związany kropka:Pionowe wyrównanie wierzchołków Graphviz w węzłach

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 
} 

Jak widać ja już próbował zastosować obciążniki do krawędzi, ale to nie wyszło

enter image description here

Odpowiedz

16

Jest możliwość korzystania z group atrybut węzłów sugerujących wyrównanie krawędzi między węzłami tej samej grupy w linii prostej.

stwierdzenie węzłów z atrybutem Grupa:

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

następnie upewnij się, że wszystkie z tych węzłów mieć (niewidoczny) krawędź między nimi:

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

wszystko razem:

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 
} 
Powiązane problemy