Solución:
Puede crear una restricción invisible para hacer que el nodo rojo aparezca a la izquierda de todos los demás nodos.
redNode -> leftmostNode [style=invis];
Antes:
Después:
@Jannis, en caso de que todavía esté interesado en una respuesta a esto, es en realidad, es una forma de controlar la ubicación de los nodos individuales: utiliza el atributo “pos”:
http://www.graphviz.org/doc/info/attrs.html#d:pos
Como ejemplo de esto, podría escribir:
n [pos="3,5!"];
Eso obligaría al nodo n
estar en precisamente (3,5)
.
Sin embargo, esto solo funciona con los motores de diseño “fdp” y “neato”.
Me gusta @smokris ‘ [style=invis]
truco para persuadir a graphviz de que ponga las cosas donde las desee, agregando bordes que afectan el diseño pero que no son visibles.
Otro truco es el constraint
atributo, que le permite agregar bordes que son visibles pero que no afectan el diseño.
Si agregar un nuevo borde estropea su gráfico, configure [constraint=false]
en ese borde: ahora graphviz lo ignorará al colocar nodos.
Si
false
, el borde no se utiliza para clasificar los nodos. Por ejemplo, en el gráficodigraph G { a -> c; a -> b; b -> c [constraint=false]; }
el borde
b -> c
no agrega una restricción durante la asignación de rango, por lo que las únicas restricciones son que a esté por encima de byc, lo que produce el gráfico: