Axes logarithmiques avec pgfplots
Remplacez axis par semilogyaxis (y logarithmique), semilogxaxis (x logarithmique) ou loglogaxis (les deux), ou définissez ymode=log ou xmode=log sur un axis normal.
Une échelle logarithmique sur l’axe y
Les valeurs qui croissent par facteurs, comme des effectifs, des erreurs ou des fréquences, se lisent mieux sur une échelle logarithmique. semilogyaxis garde x linéaire et rend y logarithmique. Les graduations se placent aux puissances de dix et sont étiquetées $10^k$.
Croissance exponentielle sur un axe y logarithmique
\begin{tikzpicture}
\begin{semilogyaxis}[xlabel={Day}, ylabel={Cells}, grid=major]
\addplot coordinates {(0,44) (1,120) (2,350) (3,980) (4,2700) (5,7600) (6,21000)};
\end{semilogyaxis}
\end{tikzpicture}Une droite sur ce graphique signifie une croissance constante du même facteur à chaque pas.
Les deux axes logarithmiques
loglogaxis rend les deux axes logarithmiques. Une loi de puissance comme $y = x^2$ devient une droite dont la pente est l’exposant.
Lois de puissance sur un graphique log-log
\begin{tikzpicture}
\begin{loglogaxis}[xlabel=$n$, ylabel={Time (s)}, legend pos=north west]
\addplot coordinates {(10,0.001) (100,0.01) (1000,0.1) (10000,1)};
\addplot coordinates {(10,0.0001) (100,0.01) (1000,1) (10000,100)};
\legend{$O(n)$, $O(n^2)$}
\end{loglogaxis}
\end{tikzpicture}La même chose avec xmode et ymode
xmode=log et ymode=log donnent une échelle logarithmique à un axis normal. C’est pratique lorsque le choix est fait par un style, ou dans un groupe de graphiques.
xmode=log sur un axe normal
\begin{tikzpicture}
\begin{axis}[xmode=log, xlabel={Frequency (Hz)}, ylabel={Gain (dB)}, ymin=-30, ymax=5]
\addplot[blue, thick, domain=1:5, samples=60, variable=t]
({10^t}, {-10*log10(1 + (10^t/1000)^2)});
\end{axis}
\end{tikzpicture}Les formules fonctionnent aussi sur les axes logarithmiques, mais domain et samples sont en unités de données : les points sont répartis uniformément entre les deux bornes, si bien que sur un axe logarithmique presque tous tombent dans la dernière décade. L’exemple trace donc une courbe paramétrée en fonction de l’exposant t, de $10^1$ à $10^5$, ce qui répartit les points uniformément le long de l’axe logarithmique. pgfplots se comporte de la même façon.
Une autre base
log basis y=2 (ou log basis x) change la base. Les graduations se placent alors aux puissances de 2 et sont étiquetées $2^k$.
Base 2 sur l’axe y
\begin{tikzpicture}
\begin{semilogyaxis}[log basis y=2, xlabel={Doublings}, ymin=1, ymax=64]
\addplot coordinates {(0,1) (1,2) (2,4) (3,8) (4,16) (5,32)};
\end{semilogyaxis}
\end{tikzpicture}Options sur les axes logarithmiques
| Option | Dans Scissor LaTeX | Remarques |
|---|---|---|
semilogxaxis, semilogyaxis, loglogaxis | Fonctionne | |
xmode=log, ymode=log | Fonctionne | |
log basis x=b, log basis y=b | Fonctionne | |
ymin, ymax sur un axe logarithmique | Fonctionne | Donnez des valeurs positives. |
log ticks with fixed point | Non pris en charge | Ignorée avec un message ; les étiquettes restent des puissances. |
ybar stacked sur un axe logarithmique | Non pris en charge | Les barres sont dessinées les unes sur les autres, sans être empilées, et aucun message n’est affiché. |
| valeurs nulles ou négatives | Supprimées | Les points impossibles à afficher sur une échelle logarithmique sont omis, avec un message. |
Ce qui diffère d’une installation TeX
Voir diagrammes en barres pour les barres sur des axes linéaires, et le manuel de pgfplots pour toutes les options : ctan.org/pkg/pgfplots.
Voir aussi Courbes, Groupes de graphiques et Contours et cartes de chaleur.
Questions et réponses
Comment rendre l’axe y logarithmique dans pgfplots ?
Utilisez \begin{semilogyaxis} ... \end{semilogyaxis} au lieu de axis, ou ajoutez ymode=log aux options de l’axe.
Pourquoi mon graphique logarithmique n’affiche-t-il aucune donnée ?
Un axe logarithmique ne peut pas afficher de valeurs nulles ou négatives. Les points concernés sont supprimés, et l’onglet Problèmes le signale. Décalez les données ou utilisez un axe linéaire.
Puis-je utiliser la base 2 ou la base e ?
Oui, avec log basis y=2 (ou tout nombre positif, par exemple log basis x=2.71828).
Chaque exemple de cette page est composé par Scissor LaTeX lors de la génération du site. Dernière mise à jour : 2026-11-07.