graphviz

Graphviz: Coloque la etiqueta de borde en el otro lado(II)



(1)

Como se ha enterado, graphviz no le permite elegir la colocación de etiquetas horizontales, por lo que todas las soluciones son un poco complicadas.

Intento # 1: Las dos soluciones publicadas por marapet ( aquí )

  1. El truco labelangle y labeldistance no se adapta bien a las diferentes longitudes del texto de la etiqueta (tendrías que recalcular nuevos números de distancia / ángulo).

  2. Splines = falso truco no funciona tan bien donde el número de bordes entre nodos> el número de nodos (terminas con bordes superpuestos).

Intento # 2: xlabels y anclajes para crear bordes curvos

Esto utiliza una característica relativamente nueva de graphviz, xlabel (que coloca la etiqueta DESPUÉS de que se hayan decidido las coordenadas de los nodos / bordes). La función de ports se utiliza para crear bordes curvos. El relleno en las etiquetas se logra con caracteres de espacio.

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

Creo que necesitas una versión de graphviz> 2.29 para usar xlabel.

Las preguntas relacionadas son:

Graphviz: Coloque la etiqueta de borde en el otro lado

Cómo colocar etiquetas de borde en borde en graphviz

Considere el siguiente archivo de puntos:

digraph { 0 -> 1 [ len=2, label="(1, 0)"]; 0 -> 1 [ len=0.5, dir=none, weight=10]; 1 -> 0 [ len=2, label="(0, -1)"]; }

dando el siguiente resultado:

¿Cómo puedo conseguir una versión simétrica? (0,-1) debe estar a la izquierda de la derecha egde.