Problème d'alignement de labels sur un axes

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 !
Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Problème d'alignement de labels sur un axes

Message non lu par Nico56 » ven. 6 mars 2015, 10:53

Bonjour à tous, je suis nouveau sur le forum, je me lance depuis peu sur Asymptote.

J'ai un problème d'alignement de labels (\sqrt 2 pas aligné correctement avec les abscisses 1, 2, 3...) sur l'axe des abscisses avec la figure suivante:

Figure asymptote 55b314085a43078e48f52b944d0dc623
*** 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. import graph_pi;
  2.  
  3. graphicrules(xunit=1cm, yunit=1cm, xmin=-2.5, xmax=2.5, ymin=-1, ymax=4);
  4. transform ec=scale(.8);
  5. transform ed=scale(.6);
  6.  
  7. cartesianaxis(
  8. extrawidth=0,extraheight=1,
  9. ec*Label("$x$",position=EndPoint, align=2N),
  10. ec*Label("$y$",position=EndPoint, align=2E),
  11. xticks=Ticks(ed*Label,NoZero,Step=1),
  12. yticks=Ticks(ed*Label,NoZero,Step=1,begin=false,beginlabel=false)
  13. );
  14.  
  15. grid(pTick=gray(0.8),ptick=gray(0.8));
  16. labeloij(ec*Label,p=currentpen,marker=nomarker);
  17.  
  18. real f(real t){
  19. return t^2;
  20. }
  21. real d(real t){
  22. return 2;
  23. }
  24.  
  25. path Cf=graph(f,-2.5,2.5,n=200);
  26. path Cd=graph(d,-2.5,2.5,n=2);
  27. draw(Cf); //,linewidth(0.75bp)
  28. draw(Cd);
  29.  
  30. pair[] int=intersectionpoints(Cf,Cd);
  31. dot(int[0]);
  32. dot(int[1]);
  33.  
  34. draw(int[0]--(int[0].x,0),dashed,Arrow(2mm));
  35. draw(int[1]--(int[1].x,0),dashed,Arrow(2mm));
  36.  
  37. labelx(ed*"$-\sqrt{2}$",(int[0].x,0));
  38. draw(scale(.6)*Label("$\sqrt{2}$"),(int[1].x,0),2S,nomarker);
  39.  
  40. ylimits(-1,4.5,Crop);
  41. shipout(bbox(0.1cm,0.1cm,white));


J'ai testé 2 choses différentes (labelx et label) mais rien de convaincant (à part bidouiller pour trouver la bonne hauteur).

Merci d'avance si vous avez une idée.
Nico
Fichiers joints
fct-aff-cours4.eps
(79.14 Kio) Téléchargé 391 fois
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

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

Re: Problème d'alignement de labels sur un axes

Message non lu par GM » ven. 6 mars 2015, 15:50

Bonjour,

remarque préalable : j'ai remis la possibilité d'utiliser graph_pi sur le forum.

Pour la question posée... j'ai fait quelques essais avec baseline (voir doc d'asymptote) sans succès, mais je n'ai pas eu beaucoup de temps pour chercher.
Je dois m'éloigner du pc.... mais, avant de chercher de nouveau plus tard, je pose deux questions :
  • un bidouillage (tâtonnement sur le dernier paramètre de labelx) n'est-il pas suffisant ?
  • est-ce "si bien" que cela soit aligné comme ci-dessous... avec les valeurs -\sqrt{2} et -1 juxtaposées sans espace entre les deux ?

Figure asymptote a3e95a232422d14f091b7c365dc7f22a
*** 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. import graph_pi;
  2.  
  3. graphicrules(xunit=1cm, yunit=1cm, xmin=-2.5, xmax=2.5, ymin=-1, ymax=4);
  4. transform ec=scale(.8);
  5. transform ed=scale(.6);
  6.  
  7. cartesianaxis(
  8. extrawidth=0,extraheight=1,
  9. ec*Label("$x$",position=EndPoint, align=2N),
  10. ec*Label("$y$",position=EndPoint, align=2E),
  11. xticks=Ticks(ed*Label,NoZero,Step=1),
  12. yticks=Ticks(ed*Label,NoZero,Step=1,begin=false,beginlabel=false)
  13. );
  14.  
  15. grid(pTick=gray(0.8),ptick=gray(0.8));
  16. labeloij(ec*Label,p=currentpen,marker=nomarker);
  17.  
  18. real f(real t){
  19. return t^2;
  20. }
  21. real d(real t){
  22. return 2;
  23. }
  24.  
  25. path Cf=graph(f,-2.5,2.5,n=200);
  26. path Cd=graph(d,-2.5,2.5,n=2);
  27. draw(Cf); //,linewidth(0.75bp)
  28. draw(Cd);
  29.  
  30. pair[] int=intersectionpoints(Cf,Cd);
  31. dot(int[0]);
  32. dot(int[1]);
  33.  
  34. draw(int[0]--(int[0].x,0),dashed,Arrow(2mm));
  35. draw(int[1]--(int[1].x,0),dashed,Arrow(2mm));
  36.  
  37. labelx(ed*"$-\sqrt{2}$",(int[0].x,0),2.2S);
  38. labelx(ed*"$\sqrt{2}$",(int[1].x,0),2.2S);
  39.  
  40. ylimits(-1,4.5,Crop);
  41. shipout(bbox(0.1cm,0.1cm,white));
Modifié en dernier par GM le mar. 10 mars 2015, 20:12, modifié 1 fois.
Raison : Modification d'une phrase mal formulée
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 !

Nico56
Messages : 58
Enregistré le : lun. 12 janv. 2015, 16:06

Re: Problème d'alignement de labels sur un axes

Message non lu par Nico56 » lun. 9 mars 2015, 08:44

C'est nickel, j'ai rajouté un +0.3W pour que le -\sqrt{2} ne se retrouve pas collé au -1.
Merci pour la réponse!
Nico
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Répondre