Les boîtes à moustaches avec R
Voici un exemple d’initiation au tracé de box-plots avec graphics, un package de R (automatiquement chargé à l’ouverture de R).

Contexte
Nous travaillerons sur le prix des marchandises vendues par un antiquaire sur deux mois consécutifs. Ceux-ci se trouvent sur une feuille de calcul Excel, sur deux colonnes et nous utiliserons la version cloud de R-Studio.
Voici les données au cas où vous souhaiteriez refaire l'exercice. La colonne prix_1 comporte le prix de 50 antiquités vendues en janvier (reproduites ici en tableau pour commodité de lecture ; elles servent aussi pour l'exemple d'histogrammes avec R).
| prix_1 | 255 | 780 | 2 600 |
| 80 | 280 | 860 | 3 000 |
| 80 | 320 | 900 | 3 000 |
| 80 | 350 | 950 | 3 200 |
| 100 | 400 | 950 | 3 500 |
| 110 | 420 | 1 200 | 4 200 |
| 120 | 450 | 1 250 | 4 300 |
| 140 | 500 | 1 350 | 4 500 |
| 140 | 520 | 1 400 | 4 600 |
| 160 | 520 | 1 600 | 4 600 |
| 200 | 580 | 2 200 | 4 800 |
| 240 | 650 | 2 200 | 4 900 |
| 250 | 740 | 2 200 |
La colonne prix_2 reprend les prix de 10 antiquités vendues en février.
| prix_2 | 130 | 380 | 2 400 |
| 100 | 200 | 1 450 | 4 500 |
| 110 | 240 | 2 100 |

Script
# Charger le package pour lire Excel
library(readxl)
# Importer les données
data <- read_excel("/cloud/project/antiquaire2.xlsx")
# Extraire les deux séries de prix
prix1 <- data$prix_1
prix2 <- data$prix_2
# Tracer les box-plots avec couleurs
boxplot(prix1, prix2,
names = c("Janvier", "Février"),
col = c("lightblue", "pink"),
border = c("darkblue", "darkred"),
main = "Ventes de janvier et février",
ylab = "Prix")
# Ajouter la moyenne sous forme de point
points(1, mean(prix1, na.rm = TRUE), pch = 19, col = "darkblue")
points(2, mean(prix2, na.rm = TRUE), pch = 19, col = "darkred")
# Ajouter une grille
grid()
# Ajouter une légende
legend("topright",
legend = c("Janvier", "Février", "Moyenne"),
fill = c("lightblue", "pink", NA),
border = c("darkblue", "darkred", NA),
pch = c(NA, NA, 19),
col = c(NA, NA, "black"))
Il y aura donc une boîte de couleur (col) bleu clair avec une bordure (border) bleu foncé et une autre de couleur rose avec une bordure rouge foncé.
Par défaut, les boîtes à moustaches réalisées par graphics n’indiquent pas la moyenne. Nous la rajoutons ici, représentée par un point dont la forme est précisée par pch = 19 (voir en page plot() les différentes formes de points). na.rm = TRUE signifie que l’on retire les valeurs manquantes ; c’est une sécurité inutile dans cet exemple mais il est toujours bon de l’indiquer.
La lecture des box-plots est facilitée par une grille. C’est pourquoi nous avons inséré grid().
Voici le résultat :

Toutefois, la grille verticale est inutile. Nous aurions pu tracer une grille horizontale grise en pointillés, par exemple :
abline(h = axTicks(2), col = "gray80", lty = "dotted")
Il saute aux yeux que la légende est mal placée puisqu’elle empiète sur le graphique. Avec graphics, il faut augmenter la taille des marges pour y inclure la légende (mais ce n'est pas le sujet de cette page, hélas).