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)
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 ).
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.
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.
W mojej wersji kropki (2.40) nie jest już możliwe używanie spacji do kontrolowania pozycji etykiety. – Nathaniel
@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