Skip to content

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

GeomType de donnéesIdéal pourAstuce
geom_point()numérique vs numériquerelations, clustersMapper color/shape sur des catégories ; ajouter geom_smooth() pour la tendance.
geom_line()x ordonné, y numériqueséries temporelles, séquencesGarder une ligne par groupe avec group= ; éviter les erreurs de tri.
geom_bar() (count) / geom_col() (pré‑agrégé)catégorieleffectifs ou totauxUtiliser position = "fill" pour des pourcentages.
geom_boxplot()catégoriel vs numériquecomparaison de médianes / IQRCombiner avec coord_flip() pour les libellés longs.
geom_violin()catégoriel vs numériqueforme de distributionAssocier à des boxplots pour montrer les quartiles.
geom_histogram()numérique seuldistributionDé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() ou theme_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