Échelle des axes en R : limites, échelle log et plage

Définissez les limites x et y, passez à une échelle logarithmique, inversez un axe et zoomez en R de base

Contrôlez les limites des axes en R de base avec xlim et ylim, passez un axe à une échelle logarithmique avec log = “x”/“y”/“xy”, inversez un axe, ajustez-le exactement aux données avec xaxs, et zoomez sur une région — le tout avec la fonction plot() de base, sans aucun package.

Date de publication

27 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Définissez la plage visible avec xlim = c(min, max) et ylim = c(min, max) dans plot().
  • Passez un axe à une échelle logarithmique avec log = "x", log = "y" ou log = "xy" (les deux).
  • Inversez un axe en donnant les limites du plus grand au plus petit : xlim = c(max, min).
  • Choisissez des axes avec marge ou ajustés exactement avec xaxs/yaxs ("r" ajoute 4 % de marge, "i" ajuste exactement).
  • Les limites rognent la vue — les points hors plage ne sont pas dessinés, donc un xlim serré zoome.

Introduction

Par défaut, plot() choisit la plage des axes à partir de vos données et la complète d’une petite marge. C’est très bien jusqu’à ce que vous ayez besoin de quelque chose de précis : une plage fixe pour que deux graphiques s’alignent, une fenêtre zoomée sur la région intéressante, une échelle logarithmique pour étaler des valeurs qui s’étendent sur plusieurs ordres de grandeur, ou un axe qui va du plus grand au plus petit. Tout cela passe par des arguments de plot() — aucun package requis.

Cette leçon couvre les quatre contrôles que vous utilisez le plus : xlim/ylim pour les limites, log pour une échelle logarithmique, des limites inversées pour retourner un axe, et xaxs/yaxs pour des axes ajustés exactement ou avec marge.

Vous préférez la grammaire des graphiques ? ggplot2 définit les échelles avec xlim(), scale_y_log10() et consorts — voir axes et échelles dans la série ggplot2.

Définir les limites des axes avec xlim et ylim

xlim et ylim prennent un vecteur à deux éléments, c(min, max). Le graphique ci-dessous montre la plage par défaut, puis les mêmes données avec une fenêtre plus large, puis une fenêtre serrée zoomée sur les premiers points.

op <- par(mfrow = c(1, 3))
x <- 1:10
y <- x^2

# Default: plot() chooses the range
plot(x, y, pch = 19, col = "#3a86d4", main = "Default")

# Enlarge the range
plot(x, y, pch = 19, col = "#3a86d4", main = "Enlarged",
     xlim = c(1, 15), ylim = c(1, 150))

# Zoom in: a tight range clips to the first points
plot(x, y, pch = 19, col = "#3a86d4", main = "Zoomed",
     xlim = c(1, 4), ylim = c(0, 20))

Three base R scatter plots of y equals x squared side by side: the default range, an enlarged range from xlim equals 1 to 15 and ylim 1 to 150, and a zoomed window showing only x from 1 to 4.

par(op)

xlim = c(1, 15) étend l’axe des x jusqu’à 15 même si les données s’arrêtent à 10 ; l’espace supplémentaire apparaît à droite. Le troisième panneau fait l’inverse : xlim = c(1, 4) ne garde que les premiers points en vue — le reste est rogné. Les limites définissent ce que vous voyez, pas ce qui existe.

Les deux mêmes arguments fonctionnent dans hist(), boxplot() et barplot(). Notez que sur un histogramme, un xlim serré ne change que la vue ; il ne refait pas le découpage des données en classes.

Passer à une échelle logarithmique

Quand les valeurs s’étendent sur plusieurs ordres de grandeur, un axe linéaire écrase les petites contre zéro. Une échelle logarithmique les étale. Passez log = "x", log = "y" ou log = "xy" pour prendre le logarithme de cet axe (ou des deux).

op <- par(mfrow = c(1, 3))
x <- 1:10
y <- 10^x          # spans 10 to 10,000,000,000

plot(x, y, pch = 19, col = "#3a86d4", main = "Linear")
plot(x, y, pch = 19, col = "#3a86d4", main = 'log = "y"', log = "y")

# log-log: both axes
z <- (1:10)^3
plot(1:10, z, pch = 19, col = "#3a86d4", main = 'log = "xy"', log = "xy")

Three base R scatter plots of an exponential relationship: a linear plot where small values bunch up, the same data with a log y-axis straightening the curve, and a log-log plot.

par(op)

Sur le panneau linéaire, tous les points sauf le dernier reposent sur le plancher. Avec log = "y", la relation exponentielle devient une ligne droite et vous pouvez lire chaque valeur. log = "xy" met les deux axes en logarithme — utile pour des données en loi de puissance, où une ligne droite sur des axes log-log signale une relation de puissance.

Les étiquettes de graduation des axes affichent toujours les valeurs originales des données (10, 100, 1000…), pas les logarithmes — R gère la transformation inverse pour vous. Seules les valeurs positives peuvent figurer sur un axe logarithmique ; voir Problèmes courants pour les zéros et les négatifs.

Inverser un axe

Pour retourner un axe afin qu’il aille du plus grand au plus petit, donnez les limites dans l’ordre inverse — max d’abord, min ensuite. C’est courant pour les rangs (le rang 1 en haut) ou les profils de profondeur (la surface en haut).

x <- 1:10
y <- x^2

# y-axis high-to-low: pass ylim as c(max, min)
plot(x, y, pch = 19, col = "#3a86d4",
     ylim = c(max(y), min(y)),
     xlab = "x", ylab = "y (reversed)")

A base R scatter plot with the y-axis reversed so larger values appear at the bottom, achieved by passing ylim from high to low.

ylim = c(max(y), min(y)) place la plus grande valeur en bas et la plus petite en haut. rev() est un raccourci pratique : ylim = rev(range(y)) fait la même chose. Inversez l’axe des x de la même façon avec xlim = c(max(x), min(x)).

Axes avec marge ou ajustés exactement avec xaxs et yaxs

Par défaut, R complète chaque axe d’environ 4 % de marge pour que les points ne touchent jamais le bord du graphique. Définissez xaxs = "i" (ou yaxs = "i") pour supprimer cette marge et ajuster l’axe exactement à la plage — utile quand vous voulez qu’une barre ou une aire soit collée contre l’axe. "r" (la valeur par défaut) conserve la marge.

op <- par(mfrow = c(1, 2))
x <- 1:10
y <- x^2

# Default padded axes
plot(x, y, pch = 19, col = "#3a86d4", main = 'Padded (xaxs = "r")')

# Exact fit: no padding
plot(x, y, pch = 19, col = "#3a86d4", main = 'Exact (xaxs = "i")',
     xaxs = "i", yaxs = "i")

Two base R scatter plots side by side: the left with default padded axes leaving a margin around the points, the right with xaxs and yaxs set to i so the data fills the panel exactly.

par(op)

À droite, les données vont jusqu’aux axes — aucun espace. Combinez xaxs = "i" avec un xlim explicite pour contrôler l’étendue exacte : xlim = c(0, 10), xaxs = "i" démarre l’axe précisément à 0.

Zoomer sur une région

Pour zoomer, définissez xlim/ylim sur la fenêtre qui vous intéresse. Parce que les limites rognent, seuls les points à l’intérieur de la fenêtre sont dessinés. Ici, nous nous concentrons sur le coin inférieur gauche d’un nuage bruité.

set.seed(123)
x <- runif(300, 0, 100)
y <- x + rnorm(300, sd = 15)

op <- par(mfrow = c(1, 2))
plot(x, y, pch = 19, col = "#3a86d4", cex = 0.6, main = "Full data")
plot(x, y, pch = 19, col = "#3a86d4", cex = 0.6, main = "Zoomed",
     xlim = c(0, 30), ylim = c(0, 30))

Two base R scatter plots of the same point cloud: the full data on the left, and a zoomed view on the right limited to x and y between 0 and 30.

par(op)

Le panneau zoomé ne garde que les points dont x et y sont inférieurs à 30. Rien n’est recalculé — ce sont les mêmes données, vues à travers une fenêtre plus petite. Pour zoomer sans écarter les points hors champ (afin que les lignes et les lissages les utilisent encore), rognez avec les outils coord de ggplot2 ; en R de base, les limites rognent toujours.

Essayez en direct

Changez les limites, passez l’axe log, ou inversez la plage et appuyez sur Run — cela s’exécute dans votre navigateur via webR, sans installation.

🟢 Avec un agent IA

Demandez à Prova « pourquoi mon axe logarithmique renvoie-t-il une erreur ? » — elle répond avec du code R de base que vous pouvez exécuter, donc la correction est reproductible. The runtime is the judge. Demander à Prova →

Problèmes courants

Un axe logarithmique renvoie une erreur ou écarte des points. Une échelle logarithmique n’est pas définie pour zéro ni pour les valeurs négatives. Si vos données en contiennent, R avertit (« NaNs produced ») et omet ces points, ou le graphique sort vide. Filtrez pour ne garder que les valeurs positives (x <- x[x > 0]) ou décalez les données avant de prendre le logarithme — ne mettez jamais en logarithme des comptages bruts qui incluent des zéros.

Mon xlim ne fait rien. xlim/ylim doivent être un vecteur de longueur 2, c(min, max). Passer un seul nombre, ou min plus grand que max sans avoir voulu d’axe inversé, donne un résultat surprenant. Affichez range(x) d’abord pour voir l’étendue des données, puis choisissez des limites autour.

Questions fréquentes

Passez xlim = c(min, max) et ylim = c(min, max) à plot() (ou à hist(), boxplot(), barplot()). Les valeurs sont en unités de données. Les limites rognent la vue, donc les points hors plage ne sont pas dessinés.

Ajoutez log = "x" pour l’axe des x, log = "y" pour l’axe des y, ou log = "xy" pour les deux. Les étiquettes de graduation affichent toujours les valeurs originales des données ; seules les valeurs positives peuvent figurer sur un axe logarithmique.

Donnez les limites du plus grand au plus petit : ylim = c(max, min), ou utilisez ylim = rev(range(y)). La plus grande valeur se place alors en bas (ou à gauche, pour xlim).

"r" (la valeur par défaut) complète l’axe d’environ 4 % de marge pour que les points ne touchent pas le bord ; "i" ajuste l’axe exactement à la plage, sans marge. Utilisez "i" quand vous voulez des barres ou une aire collées contre l’axe.

Définissez xlim/ylim sur la fenêtre voulue. Parce que les limites en R de base rognent, seuls les points à l’intérieur de cette fenêtre sont dessinés — le reste est caché, pas recalculé.

Testez vos connaissances

Les données ci-dessous s’étendent sur une large plage. Redessinez le graphique pour que l’axe des y soit sur une échelle logarithmique et que l’axe des x soit limité à 1–6.

Ajoutez deux arguments à plot() : log = "y" pour l’axe logarithmique, et xlim = c(1, 6) pour la plage x limitée.

plot(x, y, pch = 19, col = "#3a86d4",
     log = "y", xlim = c(1, 6),
     xlab = "x", ylab = "y (log scale)")

log = "y" met l’axe des y sur une échelle logarithmique ; xlim = c(1, 6) rogne l’axe des x aux six premiers points.

Vérification rapide. Vous voulez que l’axe des y aille de 100 (en haut) jusqu’à 0 (en bas). Quel ylim passez-vous ?

ylim = c(100, 0). Donner les limites du plus grand au plus petit inverse l’axe, donc 100 se place en haut.

:::

Conclusion

L’échelle des axes en R de base se résume à quelques arguments de plot() : xlim/ylim définissent la plage visible (et zooment en rognant), log passe un axe sur une échelle logarithmique, des limites inversées retournent un axe, et xaxs/yaxs choisissent une marge ou un ajustement exact. Aucun d’eux ne nécessite de package — ils font partie de plot().

Leçons connexes

Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série R Base Graphics — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

Recevez les nouvelles leçons R & Python par e-mail

Pratique, reproductible, sans spam. Désinscription à tout moment.

Double opt-in. Nous ne partageons jamais votre e-mail.

Partager cette pageXLinkedInRedditHN
Note

Cette leçon est reproductible : chaque figure a été produite par le code affiché, exécuté lors de la génération du site (si elles s’affichent, le code fonctionne), et le bac à sable se réexécute en direct dans votre navigateur. Modifiez n’importe quel bloc et appuyez sur Run. The runtime is the judge.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Échelle des axes en R : limites, échelle log et plage},
  date = {2026-06-27},
  url = {https://www.datanovia.com/learn/data-visualization/r-base/axis-scale},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Échelle des axes en R : limites, échelle log et plage.” 2026. June 27. https://www.datanovia.com/learn/data-visualization/r-base/axis-scale.