Lenguaje de gráficos de puntos: ¿cómo hacer bordes bidireccionales automáticamente?


81

Aquí hay un ejemplo muy simplificado de mi gráfico de puntos:

strict digraph graphName {
A->B
B->A
}

Esto crea texto alternativo

En su lugar, quiero que se muestre un solo borde entre A y B pero con una punta de flecha doble. Sé cómo obtener la punta de flecha doble como opción global:

strict digraph graphName {
  edge [dir="both"]
A->B
B->A
}

Pero eso se ve muy feo, y no todos mis bordes deberían ser de doble cabeza.

texto alternativo

Si proceso más el gráfico y detecto la referencia doble yo mismo y reemplazo los dos bordes con un solo borde, se ve bien. Pero prefiero no tener que hacer este paso adicional

strict digraph graphName {
A->B [dir="both"]
}

texto alternativo

¿Alguna mejor solución?

Respuestas:


65

¿Qué tal 'concentrarse = verdadero' ?:

strict digraph graphName {
concentrate=true
A->B
B->A
}

con concentrado = verdadero

De la documentación :

Si es cierto, use concentradores de borde. Esto fusiona múltiples bordes en un solo borde y hace que los bordes parcialmente paralelos compartan parte de sus caminos. La última función aún no está disponible fuera de dot.


Funciona con una etiqueta para mí y estoy ejecutando una versión anterior.
Aaron Hall

1
Si ayuda ... esto no funcionó para mí, ya que unió los bordes, pero solo puso una flecha en el extremo. Luego intenté hacer un "dígrafo estricto" ... y entonces funciona perfectamente.
philw

Esto es una tontería, pero es lo que quería el OP, ¡tan grande!
Dan Rosenstark

@philw Tampoco me funciona, obtengo bordes con una sola punta de flecha. Estoy usando pygraphviz y lo intenté pgv.AGraph(directed=True, strict=True), pero tampoco funciona, obtengo dos bordes nuevamente ... ¿Alguna sugerencia?
Tropilio

101

Deberías usar:

A -> B [dir=both]

4
Esto me ahorró algunas líneas redundantes, y lo estoy usando, así como la respuesta principal cuando corresponde.
Aaron Hall

2
No necesita comillas alrededor de "ambos"
Yetti99

@NoahSussman No puede ser la respuesta aceptada porque en realidad no responde a la pregunta;)
Dan Rosenstark
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.