Fondamentaux de ggplot2
Il existe deux manières d’aborder les graphiques en R. La première consiste à dire : « je veux tracer ceci, puis ajouter cela, puis modifier tel élément ». La seconde se résume ainsi : « mes données ont cette structure et je veux représenter telle relation ».
La première approche est celle des fonctions graphiques de base (graphics). La seconde est celle de ggplot2. C’est une différence de syntaxe mais surtout une autre façon de raisonner.
Présentation
ggplot2 repose sur un principe simple mais puissant : un graphique est la combinaison de plusieurs éléments indépendants :
- des données,
- des esthétiques (ce que l’on mappe : x, y, couleur…),
- des géométries (points, barres, lignes…),
- des statistiques (agrégation, transformation…),
- des échelles,
- un système de coordonnées,
- des thèmes.
Un graphique n’est pas une suite d’instructions, mais une construction modulaire. Avec ggplot2, on ne dit pas « trace une courbe, puis ajoute des points, puis change la couleur » mais plutôt « je veux représenter telle variable sur l’axe x, telle autre sur l’axe y, et utiliser des points ».
ggplot2 s’inscrit dans l’écosystème du tidyverse. Ce package est souvent utilisé avec dplyr.
Exemple simple : graphics vs ggplot2
Pour bien saisir la différence entre les deux approches, nous travaillerons avec un petit jeu de données :
df <- data.frame(
x = c(1, 2, 3, 4, 5),
y = c(2, 4, 5, 4, 5),
groupe = c("A", "A", "B", "B", "B")
)
Objectif :
- tracer les points,
- distinguer les groupes par couleur,
- ajouter une légende
Le package graphics est celui utilisé par défaut en R. Le script peut se présenter ainsi :
# Couleurs selon le groupe
couleurs <- ifelse(df$groupe == "A", "blue", "red")
# Graphique de base
plot(df$x, df$y,
col = couleurs,
pch = 19,
xlab = "X",
ylab = "Y",
main = "Graphique avec graphics")
# Légende
legend("topleft",
legend = c("A", "B"),
col = c("blue", "red"),
pch = 19)

Regardons la structure du script :
- On prépare les couleurs (logique externe).
- On trace le graphique (voir la fonction plot()).
- On ajoute une légende.
Avec ggplot2 :
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = groupe)) +
geom_point(size = 3) +
labs(
title = "Graphique avec ggplot2",
x = "X",
y = "Y",
color = "Groupe"
)

- On définit les données (df).
- On mappe les variables (aes).
- On choisit une géométrie (geom_point).
- La légende est générée automatiquement.
On construit un graphique en ajoutant des couches avec +, certaines définissant des géométries, d’autres des étiquettes ou des transformations, tandis que les esthétiques sont spécifiées à l’intérieur de ces couches.
Remarquez au passage que ce graphique est parfaitement intégrable dans un rapport alors celui obtenu avec graphics est très basique !
Panorama des possibilités
Les géométries définissent la forme du graphique :
- geom_point() : nuage de points (voir ci-dessus)
- geom_line() : courbe
- geom_col() : diagramme en barres
- geom_histogram() : histogramme
- geom_boxplot() : boîte à moustaches
Les esthétiques (aes) définissent les correspondances entre variables et visuels :
- x, y (voir exemple ci-dessus)
- color (idem)
- fill
- size (idem)
- shape
Exemple :
ggplot(df, aes(x = x, y = y, size = y))
Les thèmes contrôlent l’apparence globale :
ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme_minimal()
On peut ainsi ajuster les polices, les grilles, les marges…
Les possibilités de ggplot2 sont beaucoup plus étendues que ce survol peut laisser penser mais nous nous en tiendrons à ce niveau d’initiation.
