É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:10y <- x^2# Default: plot() chooses the rangeplot(x, y, pch =19, col ="#3a86d4", main ="Default")# Enlarge the rangeplot(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 pointsplot(x, y, pch =19, col ="#3a86d4", main ="Zoomed",xlim =c(1, 4), ylim =c(0, 20))
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:10y <-10^x # spans 10 to 10,000,000,000plot(x, y, pch =19, col ="#3a86d4", main ="Linear")plot(x, y, pch =19, col ="#3a86d4", main ='log = "y"', log ="y")# log-log: both axesz <- (1:10)^3plot(1:10, z, pch =19, col ="#3a86d4", main ='log = "xy"', log ="xy")
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:10y <- 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)")
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:10y <- x^2# Default padded axesplot(x, y, pch =19, col ="#3a86d4", main ='Padded (xaxs = "r")')# Exact fit: no paddingplot(x, y, pch =19, col ="#3a86d4", main ='Exact (xaxs = "i")',xaxs ="i", yaxs ="i")
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))
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
NoteComment définir les limites des axes en R ?
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.
NoteComment mettre un axe de graphique sur une échelle logarithmique en R ?
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.
NoteComment inverser un axe en R ?
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).
NoteQuelle est la différence entre xaxs = “i” et xaxs = “r” ?
"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.
NoteComment zoomer sur une partie d’un graphique en R ?
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
ImportantExercice : zoomer et passer un graphique en log
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.
AstuceIndice
Ajoutez deux arguments à plot() : log = "y" pour l’axe logarithmique, et xlim = c(1, 6) pour la plage x limitée.
AstuceSolution
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 ?
AstuceAfficher la réponse
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().
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.
@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}
}