2017-10-05 7 views
0

Je souhaite tracer un graphique avec des étiquettes externes. J'ai trouvé quelques attributs utiles - xlabel, taillabel, headlabel mais le résultat semble encore bizarre.Comment ajuster les étiquettes externes pour les nœuds

MCVE

digraph { 
forcelabels=true; 
node [shape=point,style=filled;label="",height=0.2]; 
y3[color=black;xlabel=<"y3 (2)">];x3[color=gray;xlabel=<"x3 [0.25]">]; 
y2[color=black;xlabel=<"y2 (3)">];x2[color=gray;xlabel=<"x2 [0.3]">]; 
y1[color=black;xlabel=<"y1 (2)">];x1[color=gray;xlabel=<"x1 [0.1]">]; 
y5[color=black;xlabel=<"y5 (4)">];x5[color=gray;xlabel=<"x5 [0.15]">]; 
x4[color=gray;xlabel=<"x4 [0.2]">]; 
y3->y2[dir=none;taillabel = 0.75]; 
y2->y1[dir=none;taillabel = 0.45]; 
y1->y5[dir=none;taillabel = 0.35]; 
y3->x3[dir=none]; 
y2->x2[dir=none]; 
y1->x1[dir=none]; 
y5->x5[dir=none]; 
y5->x4[dir=none]; 
} 

il ressemble

enter image description here

Comme vous pouvez le voir, la conformité entre les étiquettes et les nœuds pas toujours évidente. Donc, le Q est - y a-t-il un moyen de changer l'emplacement des étiquettes?

+0

Pouvez-vous nous dire ce que vous voulez - votre demande/plainte n'est pas très concret ... – vaettchen

+0

@vaettchen Je veux juste obtenir quelque chose de similaire à [this] (https://imgur.com/a/VdH1l) –

Répondre

1

Cela peut ne pas être la réponse à votre question car elle ne semble toujours pas très bien et prend beaucoup de réglage manuel, mais je l'affiche quand même: j'ai passé pas mal de temps à bidouiller, et il y a peut-être des idées être utile pour votre contexte actuel:

digraph 
{ 
    forcelabels = TRUE; 
    splines = FALSE; 

    // nodes 
    node[ shape = point, style = filled, color = gray, label = "", height = 0.2 ]; 
    x3[ xlabel = <"x3 [0.25]"> ]; 
    x2[ xlabel = <"x2 [0.3]"> ]; 
    x1[ xlabel = <"x1 [0.1]"> ]; 
    x5[ xlabel = <"x5 [0.15]"> ]; 
    x4; 
    node[ color = black ]; 
    y3, y2, y1, y5; 
    node[ shape = plaintext, fillcolor = white ]; 
    y_3[ label = "y3 (2)" ]; 
    y_2[ label = "y2 (3)" ]; 
    y_1[ label = "y1 (2)" ]; 
    y_5[ label = "y5 (4)" ]; 

    // edges 
    edge[ dir = none ]; 
    y3:se -> y2[ label = " 0.75" ]; 
    y2:se -> y1[ label = " 0.45" ]; 
    y1:se -> y5[ label = " 0.35" ]; 
    y3 -> x3; 
    y2 -> x2; 
    y1 -> x1; 
    y5 -> x5; 
    y5 -> x4[ headlabel = <"x4 [0.2]"> ]; 
    edge[ style = invis ]; 
    { rank = same; y3 -> y_3 } 
    { rank = same; y2 -> y_2 } 
    { rank = same; y1 -> y_1 }  
    { rank = same; y5 -> y_5 } 
} 

cède

enter image description here

+0

Wow, bien. Merci, laissez-moi réfléchir un peu avant d'accepter votre réponse –