tutorial nodesep example color graphviz overlap edge

nodesep - graphviz tutorial



Cómo evitar que los bordes en graphviz se superpongan entre sí (3)

Tengo un gráfico que he creado en graphviz, pero el problema es que los bordes se superponen (tengo 5-7 nodos en cada fila), por lo que es difícil determinar para cada nodo cuáles son los nodos que conecta.

¿Cómo puedo hacer que los bordes no se superpongan entre sí? Hacer que se crucen entre sí está bien.


Incluso para gráficos bastante triviales, veo graphviz ( neato , fdp ) para generar superposiciones. Por ejemplo:

graph G { 0; 1; 2; 3; 0--1 ; 1--2 ; 2--3 ; 3--0 ; }

Produce una cruz en mi versión del código 2.38.0 . De la documentation que recomiendan probar con diferentes semillas aleatorias. Por ejemplo, esto funcionó para mí:

neato -Gstart=5 file.dot -Tps -o file.ps


Otro enfoque es agregar una propiedad de superposición al gráfico. Las propiedades permitidas son escala (lo que aumentará enormemente el tamaño de la salida) o falso (que no aumentará tanto el tamaño, pero probablemente hará que los bordes se superpongan).

overlap = scale;

Si está utilizando overlap = false, puede deshacerse de las superposiciones de borde con nodos agregando el atributo splines=true:

overlap = false; splines = true;

Esto ralentizará notablemente el tiempo de generación para gráficos grandes.


Supongo que tienes un gráfico dirigido que trazas con punto.

No creo que haya un interruptor mágico para evitar la superposición de bordes. Graphviz intenta hacer eso de la caja.

Algunas sugerencias que pueden ayudar, según el gráfico:

  • concentradores de borde (concentrado = verdadero): combine bordes múltiples con un punto final común en bordes individuales, y bordes parcialmente paralelos que compartan partes de su camino.
  • ports : los bordes pueden tener su origen y punto final en un puerto específico (n, ne, e, se, s, sw, w, nw, w, c, _). Dependiendo de los puertos de borde, el borde cambia su forma (spline).
  • Nodos invisibles : puede haber casos en los que la introducción de nodos invisibles en los bordes de la ruta pueda tener el efecto deseado.