2010-08-10 28 views
19

Cela peut être lié à How to place edge labels ON edge in graphviz: Je le graphique suivant, que je visualiser en utilisant la commande dot -Teps g.dot > g.eps:Graphviz: Placez l'étiquette de bord de l'autre côté

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

Je voudrais que le résultat soit plus symétrique par mettre l'étiquette entre Utilisateur et Triple sur le côté gauche du graphique.

Répondre

6

Et voici la deuxième solution en utilisant splines=false et doubles bords:

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

Sortie:

alt text

25

Le placement manuel des étiquettes de bord ne peut pas être effectué avec graphviz.

Cependant, vous pouvez utiliser les headlabel, labeldistance et labelangle attributs:

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

Sortie:

graphviz output

+2

Pourquoi "rang même" avez-vous besoin dans l'exemple ci-dessus? – Pacerier