Déplacer l'origine d'un repère

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 !
Fabrice
Messages : 95
Enregistré le : sam. 13 mars 2010, 11:41

Déplacer l'origine d'un repère

Message non lu par Fabrice » dim. 9 déc. 2012, 21:07

Bonsoir,
Je ne sais pas si le titre est suffisamment explicite, mais le code le sera :

Code : Tout sélectionner

import graph;
usepackage("ucs");
usepackage("inputenc","utf8x");
usepackage("babel","french");
usepackage("mathrsfs,esvect,kpfonts");
arrowhead guillaumetellHead=HookHead(dir=10);
guillaumetellHead.size=new real(pen p)
{
  static real hcoef=5;
  return hcoef*arrowtexfactor*linewidth(p);
};
arrowbar guillaumetell=Arrow(guillaumetellHead);
unitsize(1cm,0.1cm);
real xmin=7, xmax=14, xstep=1;
real ymin=0, ymax=110, ystep=10;
xlimits(xmin,xmax);
ylimits(ymin,ymax);
pen p=fontsize(8pt);
pen pTick=lightgray;
real[] xi={7,8,9,10,11,12,13};
int[] fi={100,92,76,66,60,35,0};
path polygone=graph(xi,fi);
draw(polygone);
xaxis(BottomTop,pTick,LeftTicks("%",extend=true));
yaxis(LeftRight,pTick,RightTicks("%",extend=true));
xequals(7,ymin,ymax,p,LeftTicks(Size=1,extend =true,end=false,endlabel=false,Step=ystep,pTick=pTick),guillaumetell);
yequals(0,xmin,xmax,p,RightTicks(Size=1,extend=true,end=false,endlabel=false,Step=xstep,pTick=pTick),guillaumetell);
labelx("Heure",13.5,N,p);
labely("Fréquence cumulée décroissante (en \,\%)",108,E,p);
dot(polygone);
dot((0,0),red);

Je souhaiterais que l'origine de mon repère se trouve au point rouge.
Merci.

PS :
*** Tentative de compilation d'un code Asymptote - Erreur 2 ***
[ Un des mots utilisés dans le code fait partie de la "blacklist". ]
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Déplacer l'origine d'un repère

Message non lu par GM » dim. 9 déc. 2012, 21:18

Bonsoir
tu veux que cela commence à 0 et non à 7 si j'ai bien compris.

Mais alors, pourquoi mets-tu ces deux lignes :

Code : Tout sélectionner

real xmin=7, xmax=14, xstep=1;
...
...
xequals(7,ymin,ymax,p,LeftTicks(Size=1,extend =true,end=false,endlabel=false,Step=ystep,pTick=pTick),guillaumetell);


Change les deux 7 en 0 et cela devrait aller mieux.
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 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

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

Re: Déplacer l'origine d'un repère

Message non lu par GM » lun. 10 déc. 2012, 15:50

Pour la compilation sur le forum, il suffit d'enlever tous les usepackage inutiles pour illustrer le problème.
(Ceux qui pourraient être, à la rigueur, utiles, (mathrsfs et babel) sont déjà chargés.)

Figure asymptote 44c6b03a67fc261acc4a1276f3dfc3bf
*** 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;
  2. arrowhead guillaumetellHead=HookHead(dir=10);
  3. guillaumetellHead.size=new real(pen p)
  4. {
  5. static real hcoef=5;
  6. return hcoef*arrowtexfactor*linewidth(p);
  7. };
  8. arrowbar guillaumetell=Arrow(guillaumetellHead);
  9. unitsize(.5cm,0.05cm);
  10. real xmin=0, xmax=14, xstep=1;
  11. real ymin=0, ymax=110, ystep=10;
  12. xlimits(xmin,xmax);
  13. ylimits(ymin,ymax);
  14. pen p=fontsize(8pt);
  15. pen pTick=lightgray;
  16. real[] xi={7,8,9,10,11,12,13};
  17. int[] fi={100,92,76,66,60,35,0};
  18. path polygone=graph(xi,fi);
  19. draw(polygone);
  20. xaxis(BottomTop,pTick,LeftTicks("%",extend=true));
  21. yaxis(LeftRight,pTick,RightTicks("%",extend=true));
  22. xequals(0,ymin,ymax,p,LeftTicks(Size=1,extend =true,end=false,endlabel=false,Step=ystep,pTick=pTick),guillaumetell);
  23. yequals(0,xmin,xmax,p,RightTicks(Size=1,extend=true,end=false,endlabel=false,Step=xstep,pTick=pTick),guillaumetell);
  24. labelx("Heure",13.5,N,p);
  25. labely("Fréquence cumulée décroissante (en \,\%)",108,E,p);
  26. dot(polygone);
  27. dot((0,0),red);
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 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Fabrice
Messages : 95
Enregistré le : sam. 13 mars 2010, 11:41

Re: Déplacer l'origine d'un repère

Message non lu par Fabrice » lun. 10 déc. 2012, 20:44

Bonsoir,
GM a écrit :tu veux que cela commence à 0 et non à 7 si j'ai bien compris.

je me suis probablement mal exprimé !
En fait, je veux que les graduations sur l'axe des abscisses commencent à 7, mais que la nouvelle origine du repère(7,0) se trouve en (0,0).

Figure asymptote c9590198a7d3a0df711961162e2aaa26
*** 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;
  2. arrowhead guillaumetellHead=HookHead(dir=10);
  3. guillaumetellHead.size=new real(pen p)
  4. {
  5. static real hcoef=5;
  6. return hcoef*arrowtexfactor*linewidth(p);
  7. };
  8. arrowbar guillaumetell=Arrow(guillaumetellHead);
  9. unitsize(1cm,0.1cm);
  10. real xmin=7, xmax=14, xstep=1;
  11. real ymin=0, ymax=110, ystep=10;
  12. xlimits(xmin,xmax);
  13. ylimits(ymin,ymax);
  14. pen p=fontsize(8pt);
  15. pen pTick=lightgray;
  16. real[] xi={7,8,9,10,11,12,13};
  17. int[] fi={100,92,76,66,60,35,0};
  18. path polygone=graph(xi,fi);
  19. draw(polygone);
  20. xaxis(BottomTop,pTick,LeftTicks("%",extend=true));
  21. yaxis(LeftRight,pTick,RightTicks("%",extend=true));
  22. xequals(7,ymin,ymax,p,LeftTicks(Size=1,extend =true,end=false,endlabel=false,Step=ystep,pTick=pTick),guillaumetell);
  23. yequals(0,xmin,xmax,p,RightTicks(Size=1,extend=true,end=false,endlabel=false,Step=xstep,pTick=pTick),guillaumetell);
  24. labelx("Heure",13.5,N,p);
  25. labely("Fréquence cumulée décroissante (en \,\%)",108,E,p);
  26. dot(polygone);
  27. dot((0,0),red);

Je peux effectuer une translation de vecteur (-7,0), mais il y a peut-être une autre solution.
Merci.
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Déplacer l'origine d'un repère

Message non lu par GM » lun. 10 déc. 2012, 21:07

Des extend=true en trop :

Figure asymptote c09125b226033d35185ec57f6e50adb8
*** 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;
  2. arrowhead guillaumetellHead=HookHead(dir=10);
  3. guillaumetellHead.size=new real(pen p)
  4. {
  5. static real hcoef=5;
  6. return hcoef*arrowtexfactor*linewidth(p);
  7. };
  8. arrowbar guillaumetell=Arrow(guillaumetellHead);
  9. unitsize(1cm,0.1cm);
  10. real xmin=7, xmax=14, xstep=1;
  11. real ymin=0, ymax=110, ystep=10;
  12. xlimits(xmin,xmax);
  13. ylimits(ymin,ymax);
  14. pen p=fontsize(8pt);
  15. pen pTick=lightgray;
  16. real[] xi={7,8,9,10,11,12,13};
  17. int[] fi={100,92,76,66,60,35,0};
  18. path polygone=graph(xi,fi);
  19. draw(polygone);
  20. xaxis(BottomTop,pTick,LeftTicks("%",extend=true));
  21. yaxis(LeftRight,pTick,RightTicks("%",extend=true));
  22. xequals(7,ymin,ymax,p,LeftTicks(Size=1,end=false,endlabel=false,Step=ystep,pTick=pTick),guillaumetell);
  23. yequals(0,xmin,xmax,p,RightTicks(Size=1,end=false,endlabel=false,Step=xstep,pTick=pTick),guillaumetell);
  24. labelx("Heure",13.5,N,p);
  25. label(minipage("Fréquence cumulée décroissante (en \,\%)",50bp),(7,108),E,p);
  26. dot(polygone);
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 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Fabrice
Messages : 95
Enregistré le : sam. 13 mars 2010, 11:41

Re: Déplacer l'origine d'un repère

Message non lu par Fabrice » mar. 11 déc. 2012, 16:11

Bonjour Gaetan,
GM a écrit :Des extend=true en trop :

La force de l'habitude, merci.
Une petite remarque : j'avais fait le même graphique avec PSTricks (http://www.fileupyours.com/view/310238/forum_1.pdf), et j'ai l'impression que le graphique est "mieux fini". En effet, un zoom à 400 % montre que les graduations de la grille ne "débordent pas", ce qui n'est pas le cas avec le graphique réalisé avec Asymptote.
Mais ce n'est qu'un détail.
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Déplacer l'origine d'un repère

Message non lu par GM » mar. 11 déc. 2012, 19:12

Fabrice a écrit :Une petite remarque : j'avais fait le même graphique avec PSTricks (http://www.fileupyours.com/view/310238/forum_1.pdf), et j'ai l'impression que le graphique est "mieux fini". En effet, un zoom à 400 % montre que les graduations de la grille ne "débordent pas", ce qui n'est pas le cas avec le graphique réalisé avec Asymptote.


Il y a des graduations qui débordent si tu demandes qu'elles débordent. ;-)

Figure asymptote 341ddb57374f97ec8e1cdf3d7010621c
*** 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;
  2. arrowhead guillaumetellHead=HookHead(dir=10);
  3. guillaumetellHead.size=new real(pen p)
  4. {
  5. static real hcoef=5;
  6. return hcoef*arrowtexfactor*linewidth(p);
  7. };
  8. arrowbar guillaumetell=Arrow(guillaumetellHead);
  9. unitsize(1cm,0.1cm);
  10. real xmin=7, xmax=14, xstep=1;
  11. real ymin=0, ymax=110, ystep=10;
  12. xlimits(xmin,xmax);
  13. ylimits(ymin,ymax);
  14. pen p=fontsize(8pt);
  15. pen pTick=gray;
  16. real[] xi={7,8,9,10,11,12,13};
  17. int[] fi={100,92,76,66,60,35,0};
  18. path polygone=graph(xi,fi);
  19. draw(polygone);
  20. xequals(7,ymin,ymax,p,RightTicks(Size=1,end=false,endlabel=false,Step=ystep),guillaumetell);
  21. yequals(0,xmin,xmax,p,LeftTicks(Size=1,end=false,endlabel=false,Step=xstep),guillaumetell);
  22. xaxis(BottomTop,pTick,Ticks("%",extend=true));
  23. yaxis(LeftRight,pTick,Ticks("%",extend=true));
  24. labelx("Heure",13.5,N,p);
  25. label(minipage("Fréquence cumulée décroissante (en \,\%)",50bp),(7,108),E,p);
  26. dot(polygone);
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 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Fabrice
Messages : 95
Enregistré le : sam. 13 mars 2010, 11:41

Re: Déplacer l'origine d'un repère

Message non lu par Fabrice » mer. 12 déc. 2012, 14:44

Bonjour,
The axis is drawn before any existing objects in pic unless above=true

Il va falloir que je fasse l'effort de lire un peu les documentations.
Merci.
Debian Strech + Asymptote 2.42-12 + Emacs24 + TeXLive 2017

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

Re: Déplacer l'origine d'un repère

Message non lu par GM » mer. 12 déc. 2012, 17:21

Fabrice a écrit :Bonjour,
The axis is drawn before any existing objects in pic unless above=true

Il va falloir que je fasse l'effort de lire un peu les documentations.
Merci.

Je n'ai pas de suite compris la remarque... avant de réaliser que j'avais oublié un above=false que j'avais ajouté temporairement en oubliant de l'enlever : il ne réglait pas le problème dans ton cas.
Le problème était notamment une inversion des LeftTicks et RightTicks (j'imagine que la confusion venait du fait que si xaxis ajoute un axe horizontal, xequals en rajoute un vertical donc il ne fallait pas demander les graduations à gauche de l'axe vertical)... avec une couleur donnée au Ticks identique à celle des lignes de la grille... ce qui donnait une impression de lignes qui ne s'arrêtaient pas où tu voulais.

Mais effectivement, il faut connaitre above=false pour d'autres situations.
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 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Répondre