R ggplot2 démarrage rapide : recettes rapides pour des graphiques fiables
Problème
Les analystes ont du mal à produire des graphiques R cohérents lorsque les délais sont serrés. Passer d’un geom, d’une scale ou d’un thème à l’autre sans modèle conduit à des visuels bruyants et à des corrections répétitives.
Agitation
Des aesthetics mal placés, des légendes oubliées et des palettes de couleurs incohérentes produisent des graphiques qui induisent les parties prenantes en erreur. On perd du temps à ajuster les valeurs par défaut au lieu de se concentrer sur le signal.
Solution
Utiliser un ensemble compact de recettes ggplot2 qui rendent les aesthetics explicites, séparent les mappages des valeurs fixes et appliquent un thème épuré. Les modèles ci‑dessous couvrent les types de graphiques les plus demandés et la manière de faceter pour comparer.
Scatter : relations et lignes de tendance
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, linewidth = 0.8) +
labs(color = "Cylinders", x = "Weight", y = "MPG") +
theme_minimal()Line : séries temporelles ou catégories ordonnées
ggplot(economics, aes(x = date, y = unemploy)) +
geom_line(color = "#1f77b4", linewidth = 1) +
labs(x = "Date", y = "Unemployment") +
scale_x_date(date_breaks = "2 years", date_labels = "%Y") +
theme_minimal()Bar : effectifs ou totaux
ggplot(diamonds, aes(x = cut, fill = cut)) +
geom_bar(width = 0.7, color = "white") +
labs(x = "Cut", y = "Count") +
theme_minimal() +
theme(legend.position = "none")Box et violin : comparaisons de distributions
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_violin(alpha = 0.4, color = NA) +
geom_boxplot(width = 0.18, outlier.shape = NA, alpha = 0.8) +
labs(x = NULL, y = "Sepal Length") +
theme_minimal() +
theme(legend.position = "none")Facets pour des comparaisons rapides
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point(alpha = 0.4, size = 1.5) +
facet_wrap(~ color) +
labs(x = "Carat", y = "Price") +
theme_light()Geoms et cas d’usage recommandés
| Geom | Type de données | Idéal pour | Astuce |
|---|---|---|---|
geom_point() | numérique vs numérique | relations, clusters | Mapper color/shape sur des catégories ; ajouter geom_smooth() pour la tendance. |
geom_line() | x ordonné, y numérique | séries temporelles, séquences | Garder une ligne par groupe avec group= ; éviter les erreurs de tri. |
geom_bar() (count) / geom_col() (pré‑agrégé) | catégoriel | effectifs ou totaux | Utiliser position = "fill" pour des pourcentages. |
geom_boxplot() | catégoriel vs numérique | comparaison de médianes / IQR | Combiner avec coord_flip() pour les libellés longs. |
geom_violin() | catégoriel vs numérique | forme de distribution | Associer à des boxplots pour montrer les quartiles. |
geom_histogram() | numérique seul | distribution | Définir bins ou binwidth explicitement. |
Aesthetics vs. réglages fixes
- Mapper les données à l’intérieur de
aes():aes(color = species). - Fixer des valeurs en dehors de
aes():geom_point(color = "steelblue"). - Utiliser les fonctions
scale_*pour formater les valeurs et contrôler les palettes.
Liste de contrôle pour thèmes et labels
- Commencer avec
theme_minimal()outheme_light()pour des valeurs par défaut propres. - Ajouter
labs(title, subtitle, caption)pour le contexte ; garder des axes concis. - Masquer les légendes redondantes avec
theme(legend.position = "none")lorsque les couleurs dupliquent facets ou labels. - Pour la publication, ajuster la taille de police via
theme(text = element_text(size = 12)).
Modèle de départ
base_plot <- ggplot(data, aes(x = x_var, y = y_var)) +
geom_point(color = "#4e79a7", alpha = 0.7) +
labs(
title = "Headline metric",
x = "X axis",
y = "Y axis",
caption = "Source: internal data"
) +
theme_minimal()Guides associés
- Nettoyer vos données avant de tracer : R dplyr Data Wrangling Pipeline
- Options spécifiques aux heatmaps : pheatmap in R
- Créer rapidement des tableaux de base : How to Create a Dataframe in R