2010-08-10 20 views
19

Esto puede estar relacionado con How to place edge labels ON edge in graphviz: Tengo el siguiente gráfico, que visualizo usando el comando dot -Teps g.dot > g.eps:Graphviz: Place etiqueta borde en el otro lado

graph triple { 
    node [shape=box]; User; Object; Tag; 
    node [shape=diamond,style=filled]; Triple; 
    { 
     User -- Triple [label = "1"]; 
     Object -- Triple [label = "1"]; 
    } 
    { 
     rank=same; 
     User; 
     Object; 
    } 
    Triple -- Tag [label="n"]; 
} 

me gustaría que el resultado sea más simétrica por colocando la etiqueta entre Usuario y Triple en el lado izquierdo del gráfico.

Respuesta

6

Y es la segunda solución usando splines=false y bordes dobles aquí:

graph { 
splines=false; 
node [shape=box]; User; Object; Tag; 
node [shape=diamond,style=filled]; Triple; 
    { 
     User -- Triple [label = "1"]; 
     User -- Triple [label = ""]; 
     Object -- Triple [label = ""]; 
     Object -- Triple [label = "1"]; 
    } 
    { 
     rank=same; 
     User; 
     Object; 
    } 
    Triple -- Tag [label="n"]; 
} 

Salida:

alt text

25

La colocación manual de etiquetas de borde no se puede hacer con graphviz.

Sin embargo, usted podría utilizar los headlabel, labeldistance y labelangle atributos:

graph triple { 
node [shape=box]; User; Object; Tag; 
node [shape=diamond,style=filled]; Triple; 
    { 
     User -- Triple [headlabel = "1", labeldistance=2.5, labelangle=20]; 
     Object -- Triple [headlabel = "1", labeldistance=2.5, labelangle=-20]; 
    } 
    { 
     rank=same; 
     User; 
     Object; 
    } 
    Triple -- Tag [label="n"]; 
} 

Salida:

graphviz output

+2

¿Por qué necesita "rango misma" en el ejemplo anterior? – Pacerier