Data visualisation sous R : le boxplot
Le boxplot sous R avec la librairie GGPlot2
Nous continuons dans cette série des principaux graphiques statistiques sous R avec le boxplot.
Le boxplot nous permet de présenter la distribution d'une variable quantitative sous l'angle de sa dispersion
par rapport à la médiane. Le boxplot est particulièrement efficace pour présenter sur un même rendu les
différentes modalités d'une variable qualitative sur laquelle auront été regroupées les données.
Il existe une multitude de dérivés du boxplot, les violons par exemple. Dans cet article nous allons nous
concentrer sur la version de base et son implémentation avec la librairie ggplot2.
Pour rappel, l'objectif n'est pas de passer en revue l'ensemble des options possibles mais simplement de vous donner un code simple qui fonctionne, que vous pourrez adapter à votre convenance.
Le chargement des données
Nous allons travailler cette fois sur les salaires de cadres ayant répondu à une enquête dans le cadre de leur
affiliation à une mutuelle. Notre fichier comporte deux variables : le salaire et le secteur d'activité du cadre.
Dans cet échantillon on dénombre quatre secteurs : La construction, le transport, la restauration et la technologie.
Voici un extrait du fichier :
Id Salaire Secteur 1 15500 Restauration 2 20500 Restauration 3 21500 Restauration 4 23500 Transport 5 25500 Construction 6 25500 Construction
Chargeons nos données dans un dataframe "df_salaires" :
df_salaires <- read.table("salaires_par_secteur.csv", header = TRUE,
sep = ";",
quote = "\"",
fill = TRUE,
comment.char = "",
encoding="UTF-8")
Import de la librairie Ggplot2
Nous importons désormais la librairie Ggplot2 et paramétrons un thème (ici le "classic").
library(ggplot2)
theme_set(
theme_classic() +
theme(legend.position = "top")
)
Le boxplot simple
Pour commencer, traçons un simple boxplot tous secteurs confondus.
boxColor <- "#00AFBB"
ggplot(df_salaires, aes(x=factor(0), y=Salaire/1000)) +
geom_boxplot(fill=boxColor, alpha=0.4) +
ggtitle("Salaires des cadres") +
ylab("Salaires (kEuros)") +
theme(
plot.title = element_text(size=9, hjust = 0.5, face="bold", color="black"),
axis.title = element_text(size=9),
axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())

Le code peut paraitre complexe de prime abord, mais plusieurs options ont volontairement été ajoutées afin que vous sachiez qu'elles
existent.
Nous initialisons tout d'abord une variable "boxColor" destinée à recevoir la couleur du boxplot (code hexadecimal).
Ensuite, plusieurs instructions se suivent, séparées par le signe + . On retrouve la définition des données sources via d'une part,
le passage en paramètre du dataframe, puis l'appel à la fonction "aes" qui aura pour rôle de mapper les données au graphique.
Comme vous le constatez, nous spécifions une valeur dummy pour x, à savoir factor(0), et nous en profitons pour diviser par 1000
les salaires afin de les afficher en Keuros.
Enfin, tous les appels restants concernent la mise en forme. Ainsi nous définissons le titre avec ggtitle et le label des ordonnées avec ylab.
Via l'appel à la fonction "theme", nous spécifions des éléments de formatage, mais surtout nous rendons invisibles les label,
ticks et autres textes associés à l'axe des abscisses.
Le boxplot par groupe
Faisons à présent une ventilation par secteur d'activité.
boxColor <- c("#00AFBB", "#E7B800", "#42FF33", "#FF3349")
ggplot(df_salaires, aes(x=Secteur, y=(Salaire/1000))) +
geom_boxplot(fill=boxColor, alpha=0.4) +
ggtitle("Salaires des cadres / secteur") +
ylab("Salaires (K.euros)") +
xlab("") +
theme(
plot.title = element_text(size=9, hjust = 0.5, face="bold", color="black"),
axis.title = element_text(size=8),
axis.text.x = element_text(angle = 30, hjust=1))

Nous nous sommes contentés ici de spécifier autant de couleurs que de modalités de la variable "secteur". Par ailleurs, la ou nous avions
spécifié une valeur dummy de type factor(0) en abscisse, nous spécifions cette fois la variable secteur comme critère de regroupement.
A noter enfin que nous avons fait légèrement pivoter les textes associés aux secteurs afin qu'ils ne se chevauchent pas.
Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !