library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
geom_line(color = "#3a86d4") +
labs(x = "Date", y = "Number unemployed (thousands)") +
theme_minimal()
Contrôlez les graduations, étiquettes et limites de dates avec scale_x_date() — directement dans votre navigateur
Apprenez à formater un axe des dates ggplot2 en R avec scale_x_date() : réglez date_breaks et date_minor_breaks, formatez les étiquettes de graduations avec des codes strftime comme %Y et %b %Y, ajoutez des graduations manuelles, rognez l’axe avec limits, et gérez les dates-heures avec scale_x_datetime(). Modifiez et exécutez le code en direct, sans rien installer.
21 juin 2026
7 juillet 2026
Date R — ggplot2 choisit des graduations raisonnables, mais c’est vous qui les contrôlez.scale_x_date() pour définir date_breaks (par ex. "5 years"), date_minor_breaks et date_labels.date_labels accepte des codes strftime : "%Y" (année), "%b %Y" (Jan 2010), "%b/%d", "%U" (semaine).breaks = as.Date(c(...)) lorsque vous voulez des positions de ticks exactes.limits = as.Date(c(min, max)) — utilisez NA pour laisser une extrémité ouverte.POSIXct), tournez-vous vers scale_x_datetime() avec la même grammaire date_breaks/date_labels.Les séries temporelles vivent ou meurent par leur axe des dates. Lorsque vous mappez une colonne Date R sur x, ggplot2 trace automatiquement une échelle de dates et devine les graduations — mais les valeurs par défaut correspondent rarement à ce que vous voulez montrer. Cette leçon vous apprend à en prendre le contrôle avec scale_x_date() : comment régler l’espacement des graduations, formater les étiquettes de ticks avec des codes strftime, placer les graduations à la main, et rogner l’axe sur une fenêtre de dates. Les figures sont rendues ici même, et vous pouvez ré-exécuter ou modifier n’importe laquelle en direct.
economics, livré avec ggplot2 et doté d’une véritable colonne dateunemploy (nombre de chômeurs) et psavert (taux d’épargne personnel). Parce qu’il est intégré et possède déjà une vraie colonne Date, chaque exemple ci-dessous est entièrement autonome.
Mappez la colonne date sur x et un indicateur numérique sur y. ggplot2 détecte la classe Date et rend un axe des dates avec des graduations annuelles par défaut — aucun code supplémentaire n’est nécessaire.

C’est la classe qui déclenche l’échelle de dates. Vous pouvez vérifier que economics$date est un Date, ce qui explique qu’aucune conversion manuelle ne soit requise :
date_breaks contrôle la fréquence d’apparition d’une graduation étiquetée (majeure), écrite sous forme de chaîne lisible comme "5 years", "2 years", "6 months" ou "1 week". date_minor_breaks ajoute des lignes de grille non étiquetées entre elles pour une référence plus fine.
date_labels formate chaque graduation avec des codes strftime. Les plus courants :
%Y — année avec siècle (2010) ; %y — année sur deux chiffres (10)%b / %B — nom du mois abrégé / complet (Jan / January)%m — mois sous forme de nombre (01) ; %d — jour du mois (07)%a / %A — nom du jour de la semaine abrégé / complet (Mon / Monday)%U — semaine de l’année (00–53)Combinez-les librement. Exécutez ?strptime pour voir la liste complète. Ici, nous étiquetons l’axe tous les cinq ans avec "%Y" :

Pour afficher ensemble le mois et l’année, utilisez "%b %Y". Lorsque les étiquettes commencent à se chevaucher, faites-les pivoter avec theme(axis.text.x = ...) :
Lorsque vous voulez des ticks à des dates exactes plutôt qu’à un intervalle régulier, passez à breaks un vecteur de valeurs Date construit avec as.Date(). C’est pratique pour marquer des événements précis ou des limites de décennie.
Définissez la fenêtre de dates visible avec limits = as.Date(c(min, max)). Utilisez NA pour l’une ou l’autre extrémité afin de la laisser ouverte. Ici, nous zoomons sur le taux d’épargne personnel (psavert) à partir de 2000 :

Définir limits supprime toute donnée hors de la fenêtre (vous verrez peut-être une note signalant des lignes retirées). Pour zoomer sans écarter de données — en conservant les points situés à l’extérieur pour des statistiques comme un lisseur — rognez plutôt avec coord_cartesian(xlim = ...). Voyez le guide général sur les axes et les échelles pour cette distinction.
Lorsque vos valeurs en x portent une heure de la journée (classe POSIXct), utilisez scale_x_datetime(). Il partage la même grammaire date_breaks / date_labels, mais les codes strftime peuvent désormais inclure l’heure : %H (heure), %M (minute). Voici une petite série horaire que nous construisons nous-mêmes :
library(ggplot2)
# a tiny self-contained POSIXct series: hourly readings across one day
times <- seq(
from = as.POSIXct("2026-01-01 00:00", tz = "UTC"),
by = "hour",
length.out = 24
)
df <- data.frame(time = times, value = sin(seq(0, 2 * pi, length.out = 24)))
ggplot(df, aes(x = time, y = value)) +
geom_line(color = "#3a86d4") +
scale_x_datetime(date_breaks = "6 hours", date_labels = "%H:%M") +
labs(x = "Time of day", y = "Reading") +
theme_minimal()
Les graphiques ci-dessus ont été rendus au moment de la construction. Envie d’expérimenter ? Modifiez le code et appuyez sur Run — il s’exécute dans votre navigateur via webR (sans serveur, sans installation).
Vous travaillez en Python ? Un guide d’axe des dates avec matplotlib arrive dans la série Python.
Demandez à Prova « pourquoi certaines lignes ont-elles été supprimées quand j’ai défini les limites de scale_x_date, et comment zoomer sans les perdre ? » — elle répond avec du code que vous pouvez exécuter, si bien que l’explication est reproductible. The runtime is the judge. Demander à Prova →
date_breaks = "5 years") ou faites-les pivoter avec theme(axis.text.x = element_text(angle = 45, hjust = 1)).Date (ou POSIXct pour scale_x_datetime()). Convertissez d’abord une colonne de caractères avec as.Date(x, format = "%Y-%m-%d").limits a retiré une partie de mes données. C’est attendu — scale_x_date(limits = ...) filtre les points hors de la fenêtre. Utilisez coord_cartesian(xlim = ...) pour zoomer tout en les conservant.Ajoutez scale_x_date(date_labels = ...) et passez des codes strftime : "%Y" pour une année sur quatre chiffres, "%b %Y" pour Jan 2010, "%m/%d" pour mois/jour. Combinez les codes librement et exécutez ?strptime pour voir la liste complète.
Utilisez date_breaks dans scale_x_date() avec une chaîne lisible comme "5 years", "6 months" ou "1 week". Ajoutez date_minor_breaks pour des lignes de grille non étiquetées entre elles.
ggplot2 ne trace une échelle de dates que lorsque la colonne mappée est de classe Date (ou POSIXct pour une heure de la journée). Si elle est de type caractère, convertissez-la d’abord avec as.Date(x, format = "%Y-%m-%d") ; vérifiez avec class(yourcolumn).
Passez à breaks un vecteur de valeurs Date construit avec as.Date(), par ex. breaks = as.Date(c("1970-01-01", "2000-01-01")). Cela place les ticks à des événements précis ou à des limites de décennie plutôt qu’à un intervalle régulier.
scale_x_date(limits = ...) filtre les points hors de la fenêtre (vous verrez une note signalant des lignes retirées). Pour zoomer tout en conservant chaque point — important pour les lisseurs et les statistiques — utilisez plutôt coord_cartesian(xlim = ...).
Complétez l’appel à scale_x_date() pour que l’axe affiche une graduation étiquetée tous les 10 ans, formatée comme l’année sur quatre chiffres.
library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
geom_line(color = "#3a86d4") +
scale_x_date(date_breaks = "10 years", date_labels = "%Y") +
theme_minimal()
Vous avez formaté un axe des dates ggplot2 de bout en bout : une échelle de dates apparaît automatiquement pour une colonne Date, puis scale_x_date() vous permet de régler l’espacement des graduations avec date_breaks/date_minor_breaks, de formater les ticks avec des codes strftime via date_labels, de placer les graduations à la main avec as.Date(), et de rogner la plage avec limits. Pour des horodatages, scale_x_datetime() réutilise la même grammaire. Ensuite, appliquez ces échelles à un graphique de série temporelle complet, ou approfondissez le contrôle général des axes.
Vous préférez un livre ? GGPlot2 Essentials est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.
Prouvez que vous savez le faire. Maîtrisez toute la série ggplot2 — suivez votre parcours, construisez des projets et obtenez un certificat.
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
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
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.
Cette leçon est reproductible : les figures sont exécutées au moment de la construction (si elles s’affichent, le code fonctionne), et le bac à sable et le quiz se réexécutent en direct dans votre navigateur. The runtime is the judge.
@online{2026,
author = {},
title = {Axe des dates ggplot2 en R : formater l’échelle},
date = {2026-06-21},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/date-axis},
langid = {fr}
}