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 x_1=0 et sur l'autre x_1=1.
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
GM a écrit :
jeu. 15 févr. 2018, 16:32
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.

Figure asymptote 529320cc69c4be7edaf80eb75b92bf2f
*** 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
  1. unitsize(1cm);
  2.  
  3. pen p=red;;
  4. real marge=0.2;
  5.  
  6. object o1=draw("$m=-9$",box,(0,0),marge,p),
  7. o2=draw("$m=-7$",box,(-2,-2),marge,p),
  8. o3=draw("$m=-5$",box,(2,-2),marge,p);
  9.  
  10. add(new void(picture pic, transform t) {
  11. draw(pic,Label("$x_1=1$",UnFill(1)),point(o1,S,t)--point(o2,N,t),Center);
  12. draw(pic,Label("$x_1=0$",UnFill(1)),point(o1,S,t)--point(o3,N,t),Center);
  13. });

Re: Arbre binaire : label sur branche

Posté : jeu. 15 févr. 2018, 17:12
par GM
Une variante :

Figure asymptote f03b852ff0d72e8033a2cf426394f98b
*** 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
  1. unitsize(1.5cm);
  2.  
  3. pen p=2bp+blue;;
  4. real marge=0.4;
  5.  
  6. object o1=draw("$m=-9$",box,(0,0),marge,p),
  7. o2=draw("$m=-7$",box,(-2,-2),marge,p),
  8. o3=draw("$m=-5$",box,(2,-2),marge,p);
  9.  
  10. embed Rotate(pair z) {
  11. return new transform(transform t) {return rotate(degrees(t*z));};
  12. }
  13.  
  14. add(new void(picture pic, transform t) {
  15. path p1 = point(o1,S,t)--point(o2,N,t),
  16. p2 = point(o1,S,t)--point(o3,N,t);
  17.  
  18. draw(pic,Label("$x_1=1$",Rotate(dir(reverse(p1)))),p1,align=.1NW);
  19. draw(pic,Label("$x_1=0$",Rotate(dir(p2))),p2,align=.1NE);
  20. });

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