Saltar al contenido

Cómo controlar la ubicación de los nodos en graphviz (es decir, evitar los cruces de bordes)

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:

antes de

Después:

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áfico

digraph 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:

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *