Axe des dates ggplot2 en R : formater l’échelle

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.

Date de publication

21 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Un axe des dates apparaît automatiquement lorsque la variable mappée est un Date R — ggplot2 choisit des graduations raisonnables, mais c’est vous qui les contrôlez.
  • Utilisez 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).
  • Placez les graduations à la main avec breaks = as.Date(c(...)) lorsque vous voulez des positions de ticks exactes.
  • Rognez la plage visible avec limits = as.Date(c(min, max)) — utilisez NA pour laisser une extrémité ouverte.
  • Pour des horodatages (POSIXct), tournez-vous vers scale_x_datetime() avec la même grammaire date_breaks/date_labels.
  • Chaque graphique ci-dessous est rendu pour vous — ajustez ensuite n’importe quel exemple en direct dans le bac à sable.
Obtenez le livre — GGPlot2 Essentials (PDF)

Introduction

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.

Nous utilisons le jeu de données intégré economics, livré avec ggplot2 et doté d’une véritable colonne date
des indicateurs économiques mensuels américains à partir de 1967, dont unemploy (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.

Un graphique en courbes avec un axe des dates

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.

library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#3a86d4") +
  labs(x = "Date", y = "Number unemployed (thousands)") +
  theme_minimal()

ggplot2 line chart of US unemployment from 1967 to 2015 with a default date axis.

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 :

library(ggplot2)
class(economics$date)
[1] "Date"

Régler l’espacement des graduations : date_breaks et date_minor_breaks

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.

library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#3a86d4") +
  scale_x_date(date_breaks = "5 years", date_minor_breaks = "1 year") +
  labs(x = "Date", y = "Number unemployed (thousands)") +
  theme_minimal()

ggplot2 line chart of US unemployment with a major tick every five years and a minor gridline every year.

Formater les étiquettes : date_labels et les codes strftime

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" :

library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#3a86d4") +
  scale_x_date(date_breaks = "5 years", date_labels = "%Y") +
  labs(x = "Date", y = "Number unemployed (thousands)") +
  theme_minimal()

ggplot2 line chart of US unemployment with axis ticks every five years labelled by year only.

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 = ...) :

library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#3a86d4") +
  scale_x_date(date_breaks = "2 years", date_labels = "%b %Y") +
  labs(x = "Date", y = "Number unemployed (thousands)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

ggplot2 line chart with axis ticks every two years labelled as abbreviated month and year, rotated 45 degrees.

Placer les graduations à la main avec as.Date()

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.

library(ggplot2)
ggplot(economics, aes(x = date, y = unemploy)) +
  geom_line(color = "#3a86d4") +
  scale_x_date(
    breaks = as.Date(c("1970-01-01", "1985-01-01", "2000-01-01", "2015-01-01")),
    date_labels = "%Y"
  ) +
  labs(x = "Date", y = "Number unemployed (thousands)") +
  theme_minimal()

ggplot2 line chart of US unemployment with axis ticks placed manually at four decade-boundary dates.

Rogner l’axe avec limits

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 :

library(ggplot2)
ggplot(economics, aes(x = date, y = psavert)) +
  geom_line(color = "#3a86d4") +
  scale_x_date(
    limits = as.Date(c("2000-01-01", NA)),
    date_breaks = "3 years",
    date_labels = "%Y"
  ) +
  labs(x = "Date", y = "Personal savings rate (%)") +
  theme_minimal()

ggplot2 line chart of the US personal savings rate clipped to dates from 2000 onward.

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.

Axes de dates-heures : scale_x_datetime()

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()

ggplot2 line chart over a single day with the x axis labelled by hour and minute every six hours.

Essayez en direct

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.

🟢 Avec un agent IA

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 →

Problèmes courants

  • Mes étiquettes se chevauchent. Élargissez l’espacement (date_breaks = "5 years") ou faites-les pivoter avec theme(axis.text.x = element_text(angle = 45, hjust = 1)).
  • Mon axe n’est pas traité comme une date. ggplot2 ne trace une échelle de dates que lorsque la colonne est de classe 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.

Questions fréquentes

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 = ...).

Testez vos connaissances

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.

# Set both date_breaks = "10 years" and date_labels = "%Y"
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()
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()

Conclusion

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.

Leçons connexes

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.

Obtenir le livre (PDF) →Les leçons restent gratuites en ligne.
Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série ggplot2 — 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 : 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.

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“Axe des dates ggplot2 en R : formater l’échelle.” 2026. June 21. https://www.datanovia.com/learn/data-visualization/ggplot2/date-axis.