Arbre binaire : label sur branche

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Arbre binaire : label sur branche

Message non lu par maurice » jeu. 15 févr. 2018, 15:56

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
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Arbre binaire : label sur branche

Message non lu par GM » jeu. 15 févr. 2018, 16:32

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."
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Arbre binaire : label sur branche

Message non lu par GM » jeu. 15 févr. 2018, 16:49

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. });
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Arbre binaire : label sur branche

Message non lu par GM » jeu. 15 févr. 2018, 17:12

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. });
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: Arbre binaire : label sur branche

Message non lu par maurice » dim. 18 févr. 2018, 15:17

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
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Répondre