2013-08-29 13 views

Odpowiedz

17

Jak się dowiedziałeś, graphviz nie pozwala ci wybrać poziomego umieszczania etykiet, więc wszystkie rozwiązania są nieco zhakowane.

Próba nr 1: Oba rozwiązania wysłane przez marapet (here)

  1. labelangle i labeldistance sztuczka nie działa dobrze dostosować się do różnych długościach napisu (ty, że trzeba przeliczyć nowe numery dystansu/kąta ).

  2. wypusty = false sztuczka nie działa tak dobrze, gdzie liczba krawędzi między węzłami> liczba węzłów (w końcu z nakładającymi się krawędziami).

Próba nr 2: xlabels i kotwice stworzyć zakrzywione krawędzie

ta wykorzystuje stosunkowo nową cechę graphviz, xlabel (który umieszcza etykietę po współrzędnych dla węzłów/krawędzie zostały ustalone). Funkcja ports służy do tworzenia zakrzywionych krawędzi. Wypełnienie etykiet osiąga się za pomocą znaków spacji.

gv

digraph { 
forcelabels=true; 

    0:sw -> 1:nw [ dir=forward, xlabel=" (1, 0) "]; 
    0 -> 1 [dir=none]; 
    1:ne -> 0:se [ dir=backward, xlabel= " (0, -1) "]; 

} 

wierzę trzeba Graphviz wersja> 2,29 użyć xlabel.

+0

W mojej wersji kropki (2.40) nie jest już możliwe używanie spacji do kontrolowania pozycji etykiety. – Nathaniel

+0

@Nathaniel, na wypadek, gdyby pomógł spróbować wstawić/dołączyć kilka prawie niewidocznych znaków, takich jak kropka ('.') lub coś innego w tabeli Unicode. To może następnie zarejestrować się jako znak, którego użyje układ graficzny, w tym twoje spacje: 'xlabel =" .mytext "' lub 'xlabel =" mytext. "'. – xanderiel

Powiązane problemy