Ce tutoriel est une contribution précieuse de notre communauté, éditée par DataCamp pour plus de clarté et d'exactitude.
Envie de partager votre expertise ? Nous serions ravis de vous lire ! Proposez vos articles ou idées via notre formulaire de contribution communautaire.
"Le réchauffement planétaire n'est pas une prédiction. Il est en cours" - James Hansen
Le changement climatique est un enjeu urgent qui nous concerne tous, et la visualisation de données est un levier puissant pour sensibiliser. Dans ce tutoriel pas à pas, vous apprendrez à utiliser ggplot2 dans R pour créer des visualisations parlantes de données climatiques historiques. À la fin, vous saurez où trouver des jeux de données sélectionnés, tracer des données météorologiques historiques et personnaliser vos graphiques pour raconter une histoire convaincante.
Le changement climatique est un enjeu urgent qui nous concerne tous, et la visualisation de données est un levier puissant pour sensibiliser. Dans ce tutoriel pas à pas, vous apprendrez à utiliser ggplot2 dans R pour créer des visualisations parlantes de données climatiques historiques. À la fin, vous saurez où trouver des jeux de données sélectionnés, tracer des données météorologiques historiques et personnaliser vos graphiques pour raconter une histoire convaincante.
Dans ce tutoriel, vous verrez où trouver des données historiques fiables et sélectionnées sur les températures et comment les visualiser avec ggplot2.
- Savoir où trouver des jeux de données sélectionnés contenant des données météorologiques historiques ;
- Être à l'aise pour tracer des données météorologiques historiques avec ggplot2 ;
- Savoir personnaliser vos graphiques ggplot2 pour mieux porter votre message.
Étape 1 : trouver et charger les données
Les données de ce tutoriel sont disponibles auprès des National Centers for Environmental Information (NCEI). Le NCEI fait autorité aux États‑Unis pour les données environnementales et fournit des données de haute qualité sur le climat, les écosystèmes et les ressources en eau. Le jeu de données Global Summary of the Year (GSOY) propose des historiques météo par ville et par station. Pour ce tutoriel, nous utiliserons les données de Berkeley, CA. Vous pouvez bien sûr choisir la ville de votre choix.
Les données seront chargées avec read_csv. Le premier argument est le chemin du fichier, le second, col_select, indique à R quelles colonnes charger. Notez que ce jeu de données contient de nombreuses variables, mais nous nous intéressons uniquement à "DATE" et "TAVG". "DATE" contient l'année d'observation de la température et "TAVG" est la température moyenne annuelle en degrés Celsius. Pour en savoir plus sur les variables disponibles, consultez le codebook du jeu de données.
library(readr)23df <- read_csv('USC00040693.csv',4 col_select = c("DATE", "TAVG"))5Rows: 118 Columns: 2── Column specification ────────────────────────────────────────────────────────Delimiter: ","dbl (2): DATE, TAVGCi‑dessous, vous allez afficher votre jeu de données et ses statistiques descriptives pour vous faire une première idée. La fonction R summary() indique que les données s'étendent de 1893 à 2019 et que la température moyenne annuelle minimale observée à Berkeley (CA) sur cette période était de 12,9 °C. La moyenne maximale était de 15,93 °C.

summary(df) DATE TAVG Min. :1893 Min. :12.90 1st Qu.:1926 1st Qu.:13.50 Median :1956 Median :13.91 Mean :1956 Mean :13.97 3rd Qu.:1985 3rd Qu.:14.33 Max. :2019 Max. :15.93 NA's :33 Étape 2 : traiter les valeurs manquantes
La fonction summary() révèle 33 températures manquantes. Vous pouvez aussi vérifier les NA d'une variable donnée avec is.na(), qui renvoie TRUE si l'observation est un NA. Il suffit ensuite de sommer les valeurs manquantes : la fonction sum() convertit TRUE en 1.
print(paste("There are", sum(is.na(df$TAVG)), "missing values in this dataset."))
[1] "There are 33 missing values in this dataset."Comme nous travaillons sur une série chronologique, nous allons combler les valeurs manquantes par interpolation linéaire. Cette méthode suppose que les données ont évolué linéairement sur la période manquante. D'ailleurs, lorsque vous tracez une série temporelle en courbe, les intervalles entre observations, même sans données manquantes, sont aussi matérialisés par une ligne droite reliant deux points.
Pour réaliser l'interpolation linéaire, nous utiliserons le package imputeTS. Après installation et chargement de la bibliothèque, vous pouvez utiliser na_interpolation() pour remplir les valeurs manquantes. Cette fonction prend deux arguments : d'abord la colonne du data frame à traiter, puis la méthode d'imputation souhaitée.
install.packages("imputeTS", quiet = TRUE)library(imputeTS)Registered S3 method overwritten by 'quantmod': method from as.zoo.data.frame zoo df$TAVG <- na_interpolation(df$TAVG, option ="linear")Étape 3 : coder la première version du graphique
Une visualisation ggplot2 se construit par couches. Comme illustré ci‑dessous, chaque couche contient un objet geom, c'est‑à‑dire un élément visible dans le graphique (lignes, points, etc.).
Commencez par passer un jeu de données à la fonction ggplot(). Ensuite, mappez les variables aux esthétiques : propriétés visuelles d'un objet geom. Les esthétiques incluent, par exemple, la position sur l'axe des x, sur l'axe des y, la couleur ou la taille. Pour en savoir plus sur ggplot, consultez le cours Introduction to Data Visualization with ggplot2 de Rick Scavetta, grâce auquel j'ai beaucoup appris en data viz.

Couches ggplot2. Image créée par l'auteur.
Ci‑dessous, notre mapping (aes()) indique à ggplot d'associer la position sur l'axe des x à la variable "DATE" et la position sur l'axe des y à la température. Notez qu'en traçant uniquement cette couche, ggplot n'affichera que les axes.
Avant d'utiliser ggplot, définissons quelques paramètres globaux à appliquer à tous nos graphiques. D'abord, la taille et la résolution. Ensuite, le thème.
library(ggplot2)options(repr.plot.width = 10, repr.plot.height = 6, repr.plot.res = 150 )theme_set(theme_bw())axes <- ggplot(data = df, aes(x = DATE, y = TAVG))axes
Ajoutez maintenant une deuxième couche avec des points indiquant les températures dans le temps. Remarquez que vous pouvez l'ajouter au graphique créé à l'étape précédente.
dot_plot <- axes + geom_point()dot_plot
Enfin, ajoutez une troisième couche contenant les lignes. Il est important de souligner que certains auteurs estiment que les lignes ne représentent pas des données observées et doivent être utilisées avec prudence. Pour une discussion complète, voir le chapitre 13 de Fundamentals of Data Visualization de Claus O. Wilke.
dot_plot +geom_line()
Étape 4 : personnaliser votre graphique
Dans cette section, vous apprendrez à personnaliser votre graphique pour le rendre clair, informatif et esthétique.
D'abord, pour rendre la hausse des températures plus lisible, nous allons aussi mapper l'esthétique de couleur des points à "TAVG". Comme il s'agit d'une variable numérique, ggplot2 utilisera un dégradé pour représenter les valeurs continues par des couleurs. Vous pouvez choisir quelles couleurs représenteront les basses et hautes températures avec la fonction scale_color_gradient().
Vous pouvez également définir les étiquettes des axes x et y avec xlab() et ylab(). Un titre s'ajoute avec ggtitle(). Enfin, nous augmenterons la taille des points et ajouterons de la transparence pour révéler les données superposées.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Tendance historique de la température de l'air à Berkeley (CA)")+xlab("Année")+ylab("Température moyenne annuelle à Berkeley [ºC]")
Edward Tufte, expert reconnu en visualisation de données, recommande de maximiser la part d'encre consacrée à l'information non redondante. Cela clarifie le graphique et évite de distraire votre lecteur.
Le thème ggplot2 que nous utilisons (theme_bw()) va déjà dans ce sens, mais nous pouvons encore supprimer la grille du panneau dans le graphique ci‑dessus. Pour cela, utilisez la fonction theme() et passez‑lui deux arguments : panel.grid.minor = element_blank() et panel.grid.major = element_blank().
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Tendance historique de la température de l'air à Berkeley (CA)")+xlab("Année")+ylab("Température moyenne annuelle à Berkeley [ºC]")+theme(# Supprime les grilles : panel.grid.minor = element_blank(), panel.grid.major = element_blank())
Étape 5 : créer un thème ggplot2 pour votre visualisation
Vous allez maintenant apprendre à créer votre propre thème ggplot2. À titre d'exemple, nous allons créer un theme_datacamp() pour harmoniser notre graphique avec l'univers visuel du site DataCamp.
Premièrement, une liste de quelques couleurs DataCamp a été créée pour une utilisation ultérieure.
datacamp_colors <- list(green = "#74F065", darkblue = "#05192D", blue = "#47BEFB", pink = "#ED6AA8")Ensuite, nous allons charger une police Google appelée "Manjari" à utiliser dans notre thème. Vous pouvez la charger facilement avec le package "showtext". Si vous ne l'avez pas, installez‑le.
install.packages("showtext", quiet = TRUE)Ci‑dessous, nous chargeons le package et utilisons la fonction font_add_google() pour charger "Manjari". Nous indiquons aussi à R de rendre le texte avec "showtext" via showtext_auto() :
library(showtext)font_add_google("Manjari")showtext_auto()Loading required package: sysfontsLoading required package: showtextdbNous allons maintenant utiliser theme() pour personnaliser le graphique. La figure ci‑dessous illustre certains des arguments disponibles. Pour la liste complète, consultez la référence ggplot2.

Arguments de thème. Image créée par l'auteur.
Vous pouvez créer un nouveau thème via une fonction qui appelle la fonction theme() de ggplot2 avec vos spécifications. Remarquez que nous partons du thème noir et blanc (theme_bw()), puis nous supprimons les grilles et modifions les couleurs de fond, du panneau et des textes. Par ailleurs, une marge de 0,5 cm est ajoutée au graphique. Pour faciliter de futurs ajustements, deux arguments permettent à l'utilisateur de définir les couleurs du texte/panneau et de l'arrière‑plan.
theme_datacamp <- function(text_panel_color, background_color) { theme_bw()+ theme(text=element_text(size=28, family="Manjari", face = "bold", color = text_panel_color), # Supprime les grilles panel.grid.minor = element_blank(), panel.grid.major = element_blank(), # Change les couleurs du panneau, du tracé et de la légende en bleu foncé panel.background = element_rect(fill = background_color), plot.background = element_rect(fill = background_color), legend.background = element_rect(fill= background_color), # Met la couleur du texte de légende en blanc legend.text = element_text(color = text_panel_color, margin = margin(0, 0, 0, -0.5, "cm")), legend.title = element_text(color = text_panel_color), legend.text.align = 0, # Change la couleur de la bordure du tracé panel.border = element_rect(size = 1, color = text_panel_color), # Change la couleur des textes des axes axis.text.x = element_text(color = text_panel_color), axis.text.y = element_text(color = text_panel_color), axis.title.x = element_text(color= text_panel_color), axis.title.y = element_text(color= text_panel_color), # Change la couleur des graduations axis.ticks.y = element_line(color = text_panel_color), axis.ticks.x = element_line(color = text_panel_color), # Ajoute une marge plot.margin = margin(1, 1, 1, 1, "cm") )}Vous pouvez maintenant simplement ajouter theme_datacamp() à votre graphique en précisant vos couleurs préférées. Ici, j'utilise les couleurs DataCamp :
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendance historique de la température de l'air à Berkeley (CA)")+xlab("Année")+ylab("Température moyenne annuelle à Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
Pour finir, vous pouvez faire apparaître la tendance des températures avec un lissage LOESS (locally estimated scatterplot smoothing), comme le recommande Claus O. Wilke dans le chapitre 14 de Fundamentals of Data Visualization. Il suffit d'ajouter une couche ggplot contenant l'élément geom_smooth().
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = datacamp_colors$green, se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendance historique de la température de l'air à Berkeley (CA)", subtitle = "Visualization using theme_datacamp()")+xlab("Année")+ylab("Température moyenne annuelle à Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
N'hésitez pas à tester d'autres combinaisons de couleurs et de polices pour produire des visualisations encore plus percutantes. Ci‑dessous, par exemple, je passe la courbe LOESS, le panneau et le texte en blanc.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = "white", se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendance historique de la température de l'air à Berkeley (CA)", subtitle = "Visualization using theme_datacamp()")+xlab("Année")+ylab("Température moyenne annuelle à Berkeley [ºC]")+theme_datacamp(text_panel_color = "white", background_color = datacamp_colors$darkblue)
Conclusion
Dans ce tutoriel, vous avez appris à utiliser ggplot2 dans R pour visualiser efficacement des données climatiques historiques. Nous avons couvert l'ensemble du processus, de la recherche de données fiables à la création d'un thème ggplot2 personnalisé, afin de vous permettre de sensibiliser au changement climatique grâce à la data viz.
Pour aller plus loin, plongez dans la visualisation de données et la programmation R avec les cours DataCamp Introduction to Data Visualization with ggplot2 et Intermediate R. Ils vous aideront à consolider les compétences acquises ici et à aborder des projets plus ambitieux.