Comment se construit un graphique avec ggplot2 ?

Package de dataviz du tidyverse, ggplot2 est l’incontournable R pour la visualisation de données. La force de ce module ? ggplot2 repose sur une « grammaire graphique ». Pour plus d’infos sur cette philosophie, rendez-vous sur les liens en bas de page.

Construisons pas à pas un ggplot.

1. Installation

install.packages("ggplot2")
#Ou pour la version en développement :
devtools::install_github("tidyverse/ggplot2")

2. Ouverture

library("ggplot2")

3. Couche 1 : « data & aesthetics »

Avec cette première ligne, il s’agit tout simplement d’indiquer l’objet contenant le jeu de données, et les variables qui vont être visualisées en x, en y, ou avec les couleurs, les tailles…

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species ))

4. Couche 2 : « geom »

Ensuite, vous choisissez l’élément géométrique avec lequel vous souhaitez visualiser vos données (point, bar, histogram…).

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species )) + 
geom_point()

5. Couche 3 : « scale »

Cette couche contrôle la projection de vos données, par exemple au niveau des couleurs.

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species)) + 
geom_point() +
scale_color_manual(values = c("#45B8D2", "#E66A41", "#88878C"))

6. Couche 4 : « coord »

Ici, vous pouvez gérer le système de coordonnées de votre graphique. Le plus courant ? Le système cartésien, utilisé nativement dans ggplot2. 

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species)) + 
geom_point() +
scale_color_manual(values = c("#45B8D2", "#E66A41", "#88878C")) +
coord_cartesian()

Vous pouvez également choisir un système de carte, avec coord_map().

7. Couche 5 : « facet »

Pour plus de lisibilité, vous pouvez séparer votre graphique en plusieurs sous graphiques, chacun correspondant à un facteur de votre jeu de données.

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species)) + 
geom_point() +
scale_color_manual(values = c("#45B8D2", "#E66A41", "#88878C")) +
coord_cartesian() +
facet_wrap(~Species)

8. Couche 6 : « theme »

Deux solutions quant aux thèmes : utiliser un thème natif, ou créer le vôtre ! Le guide de la création est disponible sur le site de ggplot2(http://ggplot2.tidyverse.org/reference/theme.html).

ggplot(data = iris, aes(Sepal.Length, Sepal.Width, color = Species)) + 
geom_point() +
scale_color_manual(values = c("#45B8D2", "#E66A41", "#88878C")) +
coord_cartesian() +
facet_wrap(~Species) +
theme_bw()

En savoir plus :

La documentation officielle : http://ggplot2.tidyverse.org/reference/
Le site officiel : http://ggplot2.org/
L’ouvrage de Hadley Wickham : https://www.amazon.com/dp/0387981403/ref=cm_sw_su_dp
Le R Graphic Cookbook : https://www.amazon.com/dp/1449316956/ref=cm_sw_su_dp?tag=ggplot2-20
La cheatsheet traduite en français : http://www.thinkr.fr/aide-memoire-ggplot2/