echelle+graduation

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 !
zariski
Messages : 138
Enregistré le : dim. 30 sept. 2012, 18:50

echelle+graduation

Message non lu par zariski » sam. 18 avr. 2020, 10:08

Essais_ASY.pdf
(5.53 Kio) Téléchargé 70 fois
Bonjour,
Voilà mon problème :
je n'arrive pas à faire apparaître l'étiquette de chaque graduation, à savoir :
2^1,2^2,2^3,... sur l'axe vertical et 10^-1,10^0,10^1,10^2,.. sur l'axe horizontal
Si quelqu'un avait une solution elle serait la bienvenue, MERCI.

Pardonnez-moi mais j'ai bien insérer mon code entre les balises sauf que le temps de compilation est trop grand, aussi je le donne brut …

//----------------------------------------------------------------------------------------------------------------------------------------
import graph_pi;//Charge graph, markers et base_pi + usepackage("mathrsfs");
import patterns;
import math;
import geometry;

usepackage("fourier");
usepackage("amsmath");
usepackage("siunitx", "locale=DE");

unitsize(1cm,1cm);

real xmin = 0.1,
xmax = 1e4,
xStep = 1,
xstep = 0.1,
x0 = 0.1, //abscisse de l'origine du repère
ymin = 1,
ymax = 16,
yStep = 1,
ystep = 0.1,
y0 = 1; //ordonnée de l'origine du repère

//<-------- Base-10 logarithmic scale on x-axis: -------------------------->
real log10Down(real x) {return log10(x);}
real pow10Down(real x) {return pow10(x);}

scaleT xscale=scaleT(log10Down,pow10Down,logarithmic=true);
//<------------------------------------------------------------------------->


//<-------- Base-2 logarithmic scale on y-axis: -------------------------->
real log2(real x) {static real log2=log(2); return log(x)/log2;}
real pow2(real x) {return 2^x;}

scaleT yscale=scaleT(log2,pow2,logarithmic=true);
//<------------------------------------------------------------------------->

scale(xscale,yscale);



//<------ La grille... sans les graduations ! ----------------------------->
xlimits(xmin,xmax);
ylimits(ymin,ymax);
pen pBord = nullpen,
pGrille = 0.05mm +rgb(0.97,0.72,0.02);

// Lignes verticales
xaxis(axis = BottomTop,
p = pBord,
ticks = Ticks("%",
Step = xStep,
step = xstep,
pTick = 0.05mm + black,
ptick = pGrille,
extend = true)
);
// Lignes horizontales
yaxis(axis = LeftRight,
p = pBord,
ticks = Ticks("%",
Step = yStep,
step = ystep,
pTick = 0.05mm + black,
ptick = pGrille,
extend = true)
);
//<------------------------------------------------------------------------>


//<---------- Les axes --------------------------------------------------->
pen stylo=fontsize(5pt);



// axe horizontal d'équation y=y0
yequals(y = y0,
xmin = xmin,
xmax = xmax ,
p = stylo + blue,
Ticks(format=Label(Fill(paleblue)),
Size = 1,
end = false,
endlabel = false,
Step = xStep,
step = xstep
),
arrow = Arrow(HookHead,size=1.5mm) //Pointe de flêche
);
//label("x",(xmax+xStep/2,ymin+y0),S,stylo);



// axe vertical d'équation x=x0
xequals(x = x0,
ymin = ymin,
ymax = ymax ,
p = stylo + red,
Ticks(format=Label(Fill(palered)),
Size = 1,
end = false,
endlabel = false,
Step = yStep),
arrow = Arrow(HookHead,size=1.5mm) //Pointe de flêche
);
//label("y",(xmin+x0,ymax+yStep/2),W,stylo);
//<------------------------------------------------------------------------>
//-----------------------------------------------------------------------------------------------------
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

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

Re: echelle+graduation

Message non lu par GM » sam. 18 avr. 2020, 11:38

Bonjour,

une source d'inspiration... à compléter avec les lignes que j'ai enlevées pour rajouter les axes.

NB : pour le log décimal, il ne fallait pas réinventer ce qui existe.

Figure asymptote a3af6e215668f42468d13ad348d0c722
*** 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;//Charge graph, markers et base_pi + usepackage("mathrsfs");
  2. import patterns;
  3. import math;
  4. import geometry;
  5.  
  6. usepackage("fourier");
  7. usepackage("amsmath");
  8. usepackage("siunitx", "locale=DE");
  9.  
  10. unitsize(2cm,2cm);
  11.  
  12. real xmin = 0.1,
  13. xmax = 1e4,
  14. xStep = 1,
  15. xstep = 0.1,
  16. x0 = 0.1, //abscisse de l'origine du repère
  17. ymin = 1,
  18. ymax = 16,
  19. yStep = 1,
  20. ystep = 0.1,
  21. y0 = 1; //ordonnée de l'origine du repère
  22.  
  23. //<-------- Base-2 logarithmic scale on y-axis: -------------------------->
  24. real log2(real x) {static real log2=log(2); return log(x)/log2;}
  25. real pow2(real x) {return 2^x;}
  26.  
  27. scaleT yscale=scaleT(log2,pow2,logarithmic=true);
  28. //<------------------------------------------------------------------------->
  29.  
  30. scale(Log,yscale);
  31.  
  32. //<------ La grille ----------------------------->
  33. xlimits(xmin,xmax);
  34. ylimits(ymin,ymax);
  35.  
  36. pen pBord = nullpen,
  37. pGrille = 0.05mm +rgb(0.6,0.4,0);
  38.  
  39. // Lignes verticales
  40. xaxis(axis = BottomTop,
  41. xmin=xmin, xmax=xmax,
  42. p = pBord,
  43. LeftTicks(scale(.8)*Label(red,Fill(white)),
  44. pTick = 0.05mm + black,
  45. ptick = pGrille,
  46. extend = true)
  47. );
  48.  
  49. // Lignes horizontales
  50. yaxis(axis = LeftRight,
  51. ymin=ymin, ymax=ymax,
  52. p = pBord,
  53. RightTicks(scale(.8)*Label(red,Fill(white)),
  54. pTick = 0.05mm + black,
  55. ptick = pGrille,
  56. extend = true)
  57. );
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 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 138
Enregistré le : dim. 30 sept. 2012, 18:50

Re: echelle+graduation

Message non lu par zariski » sam. 18 avr. 2020, 13:21

Merci beaucoup, c'est en partie ce que je souhaitais …
Cependant, faisant de multiples essais et surtout tant que je n'ai pas compris toutes les routines, comment faire pour obtenir le repère ci-joint avec chaque étiquette près de son axe et les lignes verticales de 0.1 en 0.1 ?

Figure asymptote d49bb44142130001cee4fab0a34fc694
*** 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.  
  2. import graph_pi;//Charge graph, markers et base_pi + usepackage("mathrsfs");
  3. import patterns;
  4. import math;
  5. import geometry;
  6.  
  7. usepackage("fourier");
  8. usepackage("amsmath");
  9. usepackage("siunitx", "locale=DE");
  10.  
  11. unitsize(1cm,1cm);
  12.  
  13. real xmin = 0.1,
  14. xmax = 1e4,
  15. xStep = 1,
  16. xstep = 0.1,
  17. x0 = 1, //abscisse de l'origine du repère
  18. ymin = 0,
  19. ymax = 4,
  20. yStep = 1,
  21. ystep = 0.1,
  22. y0 = 1; //ordonnée de l'origine du repère
  23.  
  24. //<-------- Base-2 logarithmic scale on y-axis: -------------------------->
  25. real log2(real x) {static real log2=log(2); return log(x)/log2;}
  26. real pow2(real x) {return 2^x;}
  27.  
  28. scaleT yscale=scaleT(log2,pow2,logarithmic=true);
  29. //<------------------------------------------------------------------------->
  30.  
  31. scale(Log,Linear);
  32.  
  33.  
  34.  
  35. //<------ La grille ----------------------------->
  36. xlimits(xmin,xmax);
  37. ylimits(ymin,ymax);
  38.  
  39. pen pBord = nullpen,
  40. pGrille = 0.05mm + rgb(0.6,0.4,0);
  41.  
  42. // Lignes verticales
  43. xaxis(axis = BottomTop,
  44. xmin=xmin, xmax=xmax,
  45. p = pBord,
  46. LeftTicks(format = scale(.3)*Label(blue,Fill(paleblue)),
  47. pTick = 0.05mm + black,
  48. ptick = pGrille,
  49. extend = true)
  50. );
  51.  
  52. // Lignes horizontales
  53. yaxis(axis = LeftRight,
  54. ymin=ymin, ymax=ymax,
  55. p = pBord,
  56. RightTicks(format = scale(.3)*Label(red,Fill(palered)),
  57. pTick = 0.05mm + black,
  58. ptick = pGrille,
  59. extend = true)
  60. );
  61. //<------------------------------------------------------------------------>
  62.  
  63.  
  64.  
  65. //<---------- Les axes --------------------------------------------------->
  66. // axe horizontal d'équation y=y0
  67. yequals(y = y0,
  68. xmin = xmin,
  69. xmax = xmax ,
  70. p = 0.2pt + blue,
  71. arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
  72. Ticks("%",
  73. Step = xStep,
  74. step = xstep,
  75. Size = 0.5bp, //Taille des traits de graduation principale
  76. size = 0.4bp, //Taille des traits de graduation secondaire
  77. pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
  78. ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
  79. )
  80. );
  81. //label("$x$",(xmax+xStep/2,ymin+y0),S,stylo);
  82.  
  83.  
  84. // axe vertical d'équation x=x0
  85. xequals(x = x0,
  86. ymin = ymin,
  87. ymax = ymax ,
  88. p = 0.2pt + red,
  89. arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
  90. Ticks("%",
  91. Step = yStep,
  92. step = ystep,
  93. Size = 0.5bp, //Taille des traits de graduation principale
  94. size = 0.4bp, //Taille des traits de graduation secondaire
  95. pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
  96. ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
  97. )
  98. );
  99. //label("$y$",(xmin+x0,ymax+yStep/2),W,stylo);
  100. //<------------------------------------------------------------------------>
  101.  
  102.  
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

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

Re: echelle+graduation

Message non lu par GM » sam. 18 avr. 2020, 13:40

Je ne comprends pas !
Plus de puissance de 2 sur l'axe des ordonnées ???
On est repassé à scale(Log,Linear) ??!?
Alors que font encore log2, pow2 et yscale dans le code ?
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 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 138
Enregistré le : dim. 30 sept. 2012, 18:50

Re: echelle+graduation

Message non lu par zariski » sam. 18 avr. 2020, 14:02

oui pardon… n'oubliez pas , je fais des essais et j'ai laissé trainer la base 2 qui finalement n'interfère pas dans mon nouveau code.
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

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

Re: echelle+graduation

Message non lu par GM » sam. 18 avr. 2020, 17:48

Figure asymptote 83de02f548eae17672e4ea4b16c206a9
*** 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. import patterns;
  3. import math;
  4. import geometry;
  5.  
  6. usepackage("fourier");
  7. usepackage("amsmath");
  8. usepackage("siunitx", "locale=DE");
  9.  
  10. size(400);
  11.  
  12. real xmin = 0.1,
  13. xmax = 1e4,
  14. xStep = 1,
  15. xstep = 0.1,
  16. x0 = 1, //abscisse de l'origine du repère
  17. ymin = -1,
  18. ymax = 4,
  19. yStep = 1,
  20. ystep = 0.1,
  21. y0 = 0; //ordonnée de l'origine du repère
  22.  
  23. scale(Log,Linear);
  24.  
  25. //<------ La grille ----------------------------->
  26.  
  27. xlimits(xmin,xmax);
  28. ylimits(ymin,ymax);
  29.  
  30. pen pBord = nullpen,
  31. pGrille = 0.05mm + rgb(0.6,0.4,0);
  32.  
  33. // Lignes verticales
  34. xaxis(axis = BottomTop, //xmin = xmin, xmax = xmax ,
  35. p = pBord,
  36. Ticks('%',step=xstep,
  37. pTick = 0.05mm + black,
  38. ptick = pGrille,
  39. extend = true)
  40. );
  41.  
  42. // Lignes horizontales
  43. yaxis(axis = LeftRight, //ymin = ymin, ymax = ymax ,
  44. p = pBord,
  45. Ticks('%',step=ystep,
  46. pTick = 0.05mm + black,
  47. ptick = 0.1mm+dotted,
  48. extend = true)
  49. );
  50.  
  51. // Graduations sur l'axe des ordonnées
  52. yaxis(Label(scale(.8)*"$y$",blue,Fill(white),align=N),
  53. ymin = ymin,
  54. ymax = ymax ,
  55. p = 0.2pt + blue,
  56. arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
  57. Ticks(format = scale(.8)*Label(blue,Fill(paleblue)),
  58. NoZero,
  59. Step = yStep,
  60. step = ystep,
  61. Size = 0.5bp, //Taille des traits de graduation principale
  62. size = 0.4bp, //Taille des traits de graduation secondaire
  63. pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
  64. ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
  65. ),
  66. above=true
  67. );
  68.  
  69. // Graduations sur l'axe des abscisses
  70. xaxis(Label(scale(.8)*"$x$",red,Fill(white),align=E),
  71. xmin = xmin,
  72. xmax = xmax ,
  73. p = 0.2pt + red,
  74. arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
  75. Ticks(format = scale(.8)*Label(red,Fill(palered)),
  76. step = xstep,
  77. Size = 0.5bp, //Taille des traits de graduation principale
  78. size = 0.4bp, //Taille des traits de graduation secondaire
  79. pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
  80. ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
  81. ),
  82. above=true
  83. );
  84.  
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 31/03/19) :
PC n°1 :Windows 10 - Asymptote(2.66)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
Mes autres PC : Ubuntu 18.04LTS - Asymptote(2.66-?? git) + TexLive2018
Mon serveur : Debian Jessie - Asymptote(2.66-? git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 138
Enregistré le : dim. 30 sept. 2012, 18:50

Re: echelle+graduation

Message non lu par zariski » sam. 18 avr. 2020, 19:40

Je ne dirais qu'une seule chose : IMPECCABLE !
Je n'avais pas envisagé une seule seconde l'utilisation de "xaxis" ou "yaxis" de deux façons différentes.
Le top… comme d'habitude.

Je vous remercie vivement !

Bonne soirée !

EC
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

Répondre