2010-08-10 10 views
19

Questo può essere correlato a How to place edge labels ON edge in graphviz: Ho grafico seguente, che visualizzo con il comando dot -Teps g.dot > g.eps:Graphviz: Posto etichetta bordo sul lato opposto

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"]; 
} 

desidero il risultato di essere più simmetrica mettendo l'etichetta tra utente e Triple sul lato sinistro del grafico.

risposta

6

Ed ecco la seconda soluzione utilizzando splines=false e bordi doppi:

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"]; 
} 

uscita:

alt text

25

posizionamento manuale delle etichette bordo non può essere fatto con graphviz.

Tuttavia, è possibile utilizzare i headlabel, labeldistance e labelangle attributi:

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"]; 
} 

uscita:

graphviz output

+2

Perché avete bisogno di "rango stesso" nell'esempio di cui sopra? – Pacerier