2010-02-24 36 views
20
digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Esto creará dos bordes entre los nodos 'a' y 'b'. ¿Hay alguna forma de tener solo un borde (agruparlos)?GraphViz, agrupando los mismos bordes

+1

¿Quieres un borde con dos etiquetas? En otras palabras, ¿qué quieres que sea diferente a solo tener una declaración que especifica una ventaja entre a y b? – datageist

+0

Me pregunto si hay una manera de hacer que el borde sea más grueso si hay más duplicados. – Geremia

Respuesta

7

Creo que realmente depende de lo que su salida deseada sería. Una posibilidad es:

digraph G { 
    graph [ splines = false ] 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Cuando no utilizando splines empates bordes con segmentos de línea recta y así duplicar bordes no se pueden distinguir visualmente.

En su salida ideal, ¿cómo se vería el borde único ya que debe haber dos etiquetas diferentes para él?

+0

Thx por la respuesta. Realmente visualmente no se distingue. Con las etiquetas me gustaría concatenarlas. Probablemente tendré que volver a escribir el archivo con modificaciones. – name

+2

Estás en lo correcto. Su objetivo va más allá de las capacidades de procesamiento de nodo/borde de graphviz y requiere algún tipo de procesamiento previo para combinar duplicados en el formulario que está buscando. Por supuesto, con gráficos más pequeños como el ejemplo, puede ordenarlo con la opción splines. – RTBarnard

40

La palabra clave "estricta" puede ayudarlo.

strict digraph G { 
    a -> b [ label = "foo" ]; 
    a -> b [ label = "bar" ]; 
} 

Esto combinará los bordes. Pero creo que solo aplicará la primera etiqueta.

+1

mierda. Esto sería perfecto si solo aplicara la última etiqueta ... –

+2

Simplemente invierta el orden de la declaración ... –

Cuestiones relacionadas