2013-03-03 33 views
18

Chciałbym wymusić wyświetlanie punktów tylko pionowych lub poziomych krawędzi między węzłami.Wymuszanie ortogonalnych (pionowych lub poziomych) krawędzi z kropką

znalazłem podobny wniosek ze stanowiskiem Family tree layout with Dot/GraphViz, ale nie mam do czynienia z drzew, więc mam nadzieję, że to rozwiązanie bez wkładania dodatkowych węzłów ...

Gdybym budować na poniższym wykresie:

 
digraph G { 

    splines=ortho 

    A [ shape=box ] 
    B [ shape=box ] 
    C [ shape=box ] 
    D [ shape=box ] 

    A -> B 
    A -> C 

    B -> D 
    C -> D 

} 

Co otrzymuję to:

enter image description here

Ale chciałbym wykres jak ten:

enter image description here

Jak mogę dostać taki rendering?

Edycja: atrybut "splajnów" nie działa zgodnie z oczekiwaniami ... Czy coś jest nie tak?

Odpowiedz

23

Twoja składnia wydaje się być poprawna. Gdy uruchomię go uzyskać ortogonalnych krawędzi routingu (swego rodzaju):

enter image description here

Która wersja masz?

Pytam, ponieważ ortogonalne trasowanie krawędzi jest dostępne tylko w wersjach Graphviz od 28 września 2010 r. I nowszych. Nie wszystkie systemy mają zapełnione nowsze wersje. W moim systemie musiałem download i ręcznie zainstalować Graphviz, aby uzyskać wersję nowszą niż 2.26.3 (od 26 stycznia 2010 r.).

Zakładając rzeczywisty wykres zawiera więcej niż 4 węzły, jeśli chcesz mieć linie zakręt i nie chcesz, aby dodać dodatkowe węzły (niewidoczny), należy spróbować gry z wykresami nodesep atrybut. Zobacz kod i obraz poniżej.

digraph G { 

    graph [splines=ortho, nodesep=1] 
    node [shape=record] 

    A -> {B, C} -> D 
} 

enter image description here