echelle+graduation
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 :
- Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
- Version d'Asymptote et éditeur utilisé pour les figures Asymptote
- Distribution LaTeX et éditeur utilisé pour les tex.
On va gagner du temps dans les réponses !
echelle+graduation
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("",(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("",(xmin+x0,ymax+yStep/2),W,stylo);
//<------------------------------------------------------------------------>
//-----------------------------------------------------------------------------------------------------
Re: echelle+graduation
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.
*** 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
- 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(2cm,2cm);
- 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-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(Log,yscale);
- //<------ La grille ----------------------------->
- xlimits(xmin,xmax);
- ylimits(ymin,ymax);
- pen pBord = nullpen,
- pGrille = 0.05mm +rgb(0.6,0.4,0);
- // Lignes verticales
- xaxis(axis = BottomTop,
- xmin=xmin, xmax=xmax,
- p = pBord,
- LeftTicks(scale(.8)*Label(red,Fill(white)),
- pTick = 0.05mm + black,
- ptick = pGrille,
- extend = true)
- );
- // Lignes horizontales
- yaxis(axis = LeftRight,
- ymin=ymin, ymax=ymax,
- p = pBord,
- RightTicks(scale(.8)*Label(red,Fill(white)),
- pTick = 0.05mm + black,
- ptick = pGrille,
- extend = true)
- );
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 !
Re: echelle+graduation
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 ?
*** 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
- 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 = 1, //abscisse de l'origine du repère
- ymin = 0,
- ymax = 4,
- yStep = 1,
- ystep = 0.1,
- y0 = 1; //ordonnée de l'origine du repère
- //<-------- 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(Log,Linear);
- //<------ La grille ----------------------------->
- xlimits(xmin,xmax);
- ylimits(ymin,ymax);
- pen pBord = nullpen,
- pGrille = 0.05mm + rgb(0.6,0.4,0);
- // Lignes verticales
- xaxis(axis = BottomTop,
- xmin=xmin, xmax=xmax,
- p = pBord,
- LeftTicks(format = scale(.3)*Label(blue,Fill(paleblue)),
- pTick = 0.05mm + black,
- ptick = pGrille,
- extend = true)
- );
- // Lignes horizontales
- yaxis(axis = LeftRight,
- ymin=ymin, ymax=ymax,
- p = pBord,
- RightTicks(format = scale(.3)*Label(red,Fill(palered)),
- pTick = 0.05mm + black,
- ptick = pGrille,
- extend = true)
- );
- //<------------------------------------------------------------------------>
- //<---------- Les axes --------------------------------------------------->
- // axe horizontal d'équation y=y0
- yequals(y = y0,
- xmin = xmin,
- xmax = xmax ,
- p = 0.2pt + blue,
- arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
- Ticks("%",
- Step = xStep,
- step = xstep,
- Size = 0.5bp, //Taille des traits de graduation principale
- size = 0.4bp, //Taille des traits de graduation secondaire
- pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
- ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
- )
- );
- //label("$x$",(xmax+xStep/2,ymin+y0),S,stylo);
- // axe vertical d'équation x=x0
- xequals(x = x0,
- ymin = ymin,
- ymax = ymax ,
- p = 0.2pt + red,
- arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
- Ticks("%",
- Step = yStep,
- step = ystep,
- Size = 0.5bp, //Taille des traits de graduation principale
- size = 0.4bp, //Taille des traits de graduation secondaire
- pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
- ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
- )
- );
- //label("$y$",(xmin+x0,ymax+yStep/2),W,stylo);
- //<------------------------------------------------------------------------>
Re: echelle+graduation
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 ?
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 !
Re: echelle+graduation
Re: echelle+graduation
*** 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
- import graph_pi;
- import patterns;
- import math;
- import geometry;
- usepackage("fourier");
- usepackage("amsmath");
- usepackage("siunitx", "locale=DE");
- size(400);
- real xmin = 0.1,
- xmax = 1e4,
- xStep = 1,
- xstep = 0.1,
- x0 = 1, //abscisse de l'origine du repère
- ymin = -1,
- ymax = 4,
- yStep = 1,
- ystep = 0.1,
- y0 = 0; //ordonnée de l'origine du repère
- scale(Log,Linear);
- //<------ La grille ----------------------------->
- xlimits(xmin,xmax);
- ylimits(ymin,ymax);
- pen pBord = nullpen,
- pGrille = 0.05mm + rgb(0.6,0.4,0);
- // Lignes verticales
- xaxis(axis = BottomTop, //xmin = xmin, xmax = xmax ,
- p = pBord,
- Ticks('%',step=xstep,
- pTick = 0.05mm + black,
- ptick = pGrille,
- extend = true)
- );
- // Lignes horizontales
- yaxis(axis = LeftRight, //ymin = ymin, ymax = ymax ,
- p = pBord,
- Ticks('%',step=ystep,
- pTick = 0.05mm + black,
- ptick = 0.1mm+dotted,
- extend = true)
- );
- // Graduations sur l'axe des ordonnées
- yaxis(Label(scale(.8)*"$y$",blue,Fill(white),align=N),
- ymin = ymin,
- ymax = ymax ,
- p = 0.2pt + blue,
- arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
- Ticks(format = scale(.8)*Label(blue,Fill(paleblue)),
- NoZero,
- Step = yStep,
- step = ystep,
- Size = 0.5bp, //Taille des traits de graduation principale
- size = 0.4bp, //Taille des traits de graduation secondaire
- pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
- ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
- ),
- above=true
- );
- // Graduations sur l'axe des abscisses
- xaxis(Label(scale(.8)*"$x$",red,Fill(white),align=E),
- xmin = xmin,
- xmax = xmax ,
- p = 0.2pt + red,
- arrow = Arrow(HookHead,size=1mm), //Pointe de flêche
- Ticks(format = scale(.8)*Label(red,Fill(palered)),
- step = xstep,
- Size = 0.5bp, //Taille des traits de graduation principale
- size = 0.4bp, //Taille des traits de graduation secondaire
- pTick = 0.3bp + deepgreen, //couleur+taille des graduations principales
- ptick = 0.3bp + magenta //couleur+taille des graduations secondaires
- ),
- above=true
- );
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 !
Re: echelle+graduation
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