Comment étiqueter les valeurs aberrantes dans les boxplots dans ggplot2
Ce didacticiel fournit un exemple étape par étape de la façon d’étiqueter les valeurs aberrantes dans les boxplots dans ggplot2.
Étape 1 : Créer le bloc de données
Tout d’abord, créons le bloc de données suivant qui contient des informations sur les points marqués par 60 joueurs de basket-ball différents dans trois équipes différentes :
#make this example reproducible
set.seed(1)
#create data frame
df <- data.frame(team=rep(c('A', 'B', 'C'), each=20),
player=rep(LETTERS[1:20], times=3),
points=round(rnorm(n=60, mean=30, sd=10), 2))
#view head of data frame
head(df)
team player points
1 A A 23.74
2 A B 31.84
3 A C 21.64
4 A D 45.95
5 A E 33.30
6 A F 21.80
Remarque : Nous avons utilisé la fonction set.seed() pour garantir que cet exemple est reproductible.
Étape 2 : définir une fonction pour identifier les valeurs aberrantes
Dans ggplot2, une observation est définie comme une valeur aberrante si elle répond à l’une des deux exigences suivantes :
- L’observation est 1,5 fois l’écart interquartile inférieur au premier quartile (Q1)
- L’observation est 1,5 fois l’écart interquartile supérieur au troisième quartile (Q3).
Nous pouvons créer la fonction suivante dans R pour étiqueter les observations comme valeurs aberrantes si elles répondent à l’une de ces deux exigences :
find_outlier <- function(x) {
return(x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}
Connexes : Comment interpréter l’intervalle interquartile
Étape 3 : Étiqueter les valeurs aberrantes dans les boxplots dans ggplot2
Ensuite, nous pouvons utiliser le code suivant pour étiqueter les valeurs aberrantes dans les boxplots dans ggplot2 :
library(ggplot2)
library(dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), points, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na.rm=TRUE, hjust=-.5)
Notez que deux valeurs aberrantes sont étiquetées dans le graphique.
La première valeur aberrante est un joueur de l’équipe A qui a marqué 7,85 points et l’autre valeur aberrante est un joueur de l’équipe B qui a marqué 10,11 points.
Notez que nous pourrions également utiliser une variable différente pour étiqueter ces valeurs aberrantes.
Par exemple, nous pourrions échanger les points du joueur dans la fonction mutate() pour étiqueter les valeurs aberrantes en fonction du nom du joueur :
library(ggplot2)
library(dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), player, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na.rm=TRUE, hjust=-.5)
La valeur aberrante de l’équipe A a désormais une étiquette N et la valeur aberrante de l’équipe B a désormais une étiquette D , car celles-ci représentent les noms de joueurs qui ont des valeurs aberrantes pour les points.
Remarque : L’argument hjust dans geom_text() est utilisé pour pousser l’étiquette horizontalement vers la droite afin qu’elle ne chevauche pas le point du tracé.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans ggplot2 :
Comment changer la taille de la police dans ggplot2
Comment supprimer une légende dans ggplot2
Comment faire pivoter les étiquettes des axes dans ggplot2