Page 1 sur 1
Arbre binaire : label sur branche
Posté : jeu. 15 févr. 2018, 15:56
par maurice
Bonjour,
Je souhaite créer un arbre binaire.
J'ai utilisé l'extension
drawtree
Code : Tout sélectionner
import drawtree;
unitsize(1cm);
defaultpen(fontsize(11pt));
treeLevelStep = 1cm;
TreeNode root = makeNode("$m=-9$");
TreeNode child1 = makeNode(root, "$m=-7$");
TreeNode child2 = makeNode(root, "$m=-5$");
draw(root, (0,0));
J'aimerais écrire sur la branche qui part vers la droite le label
et sur l'autre
.
Est-ce possible avec cette extension ?
Sinon, il y a-t-il une autre extension ou une autre méthode qui pourrait me faciliter le travail ?
Merci
Bruno
Re: Arbre binaire : label sur branche
Posté : jeu. 15 févr. 2018, 16:32
par GM
Bonjour,
ta question m'a fait réaliser que je n'ai pas encore rectifié les liens vers gm_probabilitytree.asy
dans cette page
http://asy.marris.fr/asymptote/Arbres/index.html
Ce ne sera pas une solution de toute façon si tu veux l'arbre orienté comme tu l'as montré car je ne l'ai pas prévu.
Un petit tour dans drawtree.asy montre que ce que tu veux n'y est pas prévu non plus.
On doit pouvoir le faire à la façon de cet exemple
http://asy.marris.fr/asymptote/Arbres/i ... 0109_arbre ...
mais ce n'est pas une façon de faire aisée, je te l'accorde.
Y a t-il des nouvelles extensions depuis un ou deux ans ? Je ne sais pas. J'imagine que tu as cherché dans un moteur de recherche.
J'ai voulu aller voir sur le site Asymptote mais je viens d'avoir en retour :
"Project web is currently offline pending the final migration of its data to our new datacenter."
Re: Arbre binaire : label sur branche
Posté : jeu. 15 févr. 2018, 16:49
par GM
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus :
Tout sélectionner
unitsize(1cm);
pen p=red;;
real marge=0.2;
object o1=draw("$m=-9$",box,(0,0),marge,p),
o2=draw("$m=-7$",box,(-2,-2),marge,p),
o3=draw("$m=-5$",box,(2,-2),marge,p);
add(new void(picture pic, transform t) {
draw(pic,Label("$x_1=1$",UnFill(1)),point(o1,S,t)--point(o2,N,t),Center);
draw(pic,Label("$x_1=0$",UnFill(1)),point(o1,S,t)--point(o3,N,t),Center);
});
Re: Arbre binaire : label sur branche
Posté : jeu. 15 févr. 2018, 17:12
par GM
Une variante :
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus :
Tout sélectionner
unitsize(1.5cm);
pen p=2bp+blue;;
real marge=0.4;
object o1=draw("$m=-9$",box,(0,0),marge,p),
o2=draw("$m=-7$",box,(-2,-2),marge,p),
o3=draw("$m=-5$",box,(2,-2),marge,p);
embed Rotate(pair z) {
return new transform(transform t) {return rotate(degrees(t*z));};
}
add(new void(picture pic, transform t) {
path p1 = point(o1,S,t)--point(o2,N,t),
p2 = point(o1,S,t)--point(o3,N,t);
draw(pic,Label("$x_1=1$",Rotate(dir(reverse(p1)))),p1,align=.1NW);
draw(pic,Label("$x_1=0$",Rotate(dir(p2))),p2,align=.1NE);
});
Re: Arbre binaire : label sur branche
Posté : dim. 18 févr. 2018, 15:17
par maurice
Merci pour ces réponses...
Je me suis contenté de le faire à la main pour l'instant :
Code : Tout sélectionner
import drawtree;
unitsize(1cm);
defaultpen(fontsize(11pt));
treeLevelStep = 1cm;
TreeNode root = makeNode("$m=-9$");
TreeNode child1 = makeNode(root, "$m=-7$");
TreeNode child2 = makeNode(root, "$m=-5$");
draw( root, (0,0) );
label("\tiny $x_1=1$", (-.5, -.5), 2W, red);
label("\tiny $x_1=0$", (.5, -.5), 2E, red);
Ce sera plus délicat pour des arbres binaires plus grand :
Code : Tout sélectionner
import drawtree;
unitsize(1cm);
defaultpen(fontsize(11pt));
treeLevelStep = 1cm;
TreeNode root = makeNode("$m=-9$");
TreeNode child1 = makeNode(root, "$m=-7$");
TreeNode child2 = makeNode(root, "$m=-5$");
TreeNode child11 = makeNode(child1, "$m=-3$");
TreeNode child12 = makeNode(child1, "$m=-5$");
TreeNode child111 = makeNode(child11, "$m=-1$");
TreeNode child112 = makeNode(child11, "$m=-1$");
TreeNode child1111 = makeNode(child111, "$m=-1$");
TreeNode child121 = makeNode(child12, "$m=-5$");
TreeNode child1211 = makeNode(child121, "$m=-3$");
TreeNode child1212 = makeNode(child121, "$m=-5$");
draw( root, (0,0) );
Bonne journée
Bruno