2013-08-29 7 views

Antwort

17

Wie Sie herausgefunden haben, lässt graphviz Sie nicht horizontal label Platzierung wählen, so dass alle Lösungen ein wenig hacky sind.

Versuch # 1: Die beiden von marapet geschrieben Lösungen (here)

  1. Die labelangle und labeldistance Trick passen nicht gut auf unterschiedlichen Längen der Beschriftungstext (man müsste neu berechnen neue Distanz-/Winkelnummern).

  2. Die Splines = false Trick nicht so gut funktioniert, wo die Anzahl der Kanten zwischen den Knoten> die Anzahl der Knoten (Sie mit überlappenden Kanten am Ende).

Versuch # 2: xlabels und Anker gekrümmte Kanten

Diese verwendet ein relativ neues Merkmal graphviz zu schaffen, xlabel (die das Etikett nach den Koordinaten für die Knoten legen/Kanten entschieden wurden). Die Funktion ports wird zum Erstellen von Kurven verwendet. Das Auffüllen der Etiketten erfolgt mit Leerzeichen.

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) "]; 

} 

Ich glaube, Sie graphviz Version> 2.29 verwenden xlabel benötigen.

+0

In meiner Version von Punkt (2.40) scheint es nicht mehr möglich zu sein, Leerzeichen zu verwenden, um die Position des Etiketts zu steuern. – Nathaniel

+0

@Nathaniel, falls es hilft, einige fast unsichtbare Zeichen wie den Punkt ('.') oder etwas anderes in der Unicode-Tabelle voranzustellen. Dies könnte dann als ein Zeichen, das die Layout-Engine verwenden wird, einschließlich Ihrer Leerzeichen, verwendet werden: 'xlabel =". Mytext "' oder 'xlabel =" mytext. "'. – xanderiel

Verwandte Themen