ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
Ce tutoriel R décrit comment créer un box plot avec le logiciel R et le package ggplot2.
La fonction geom_boxplot() est utilisée. Un format simplifié est :
geom_boxplot(outlier.colour="black", outlier.shape=16,
outlier.size=2, notch=FALSE)
- outlier.colour, outlier.shape, outlier.size : La couleur, le type et la taille des points atypiques
- notch : valeur logique. si TRUE, un box plot de type notch est réalisé. Le “notch” affiche une intervalle de confiance autour de la médiane qui est normalement basée sur la médiane +/- 1.58*IQR/sqrt(n). Les “notch” sont utilisés pour comparer des groupes; Si les “notch” de deux box plots ne se chevauchent pas, c’est une forte évidence que les médianes diffèrent.
Préparer les données
Le jeu de données ToothGrowth est utilisé dans les exemples suivants :
# Convertir la colonne dose en facteur
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
Assurez-vous que la variable dose soit convertie en facteur en utilisant le script de R ci-dessus.
Box plots basiques
library(ggplot2)
#Box plots basiques
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()
p
# Tourner le box plot
p + coord_flip()
# Box plot de type notch
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(notch=TRUE)
# Changer la couleur, la forme et la taille des
# valeurs atypiques (outliers)
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(outlier.colour="red", outlier.shape=8,
outlier.size=4)
La fonction stat_summary() peut être utilisée pour ajouter un point, représentant la moyenne, sur le box plot:
# Box plot avec la moyenne affichée
p + stat_summary(fun.y=mean, geom="point", shape=23, size=4)
Choisir les groupes à afficher :
p + scale_x_discrete(limits=c("0.5", "2"))
Box plot avec des points
Des points peuvent être ajoutés à un box plot en utilisant la fonction geom_dotplot() ou geom_jitter() :
# Box plot avec un dot plot
p + geom_dotplot(binaxis='y', stackdir='center', dotsize=1)
# Box plot avec des points dispersés (jitter)
# 0.2 : dégré de dispersion sur l'axe des x
p + geom_jitter(shape=16, position=position_jitter(0.2))
Changer la couleur des box plots par groupes
Changer la couleur des traits des box plots
La couleur des traits du box plot peut être automatiquement contrôlée par les niveaux de la variable dose:
# Changer la couleur des traits du box plot par groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, color=dose)) +
geom_boxplot()
p
Il est aussi possible de changer manuellement la couleur des traits du box plot en utilisant les fonctions:
- scale_color_manual() : pour utiliser des couleurs personnalisées
- scale_color_brewer() : pour utiliser les palettes de couleurs du package RColorBrewer
- scale_color_grey() : pour utiliser la palette de couleurs grises
# Utiliser des couleurs personnalisées
p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Utiliser les palettes RColorBrewer
p+scale_color_brewer(palette="Dark2")
# Utiliser la palette de couleurs grises
p + scale_color_grey() + theme_classic()
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
Changer les couleurs de remplissage du box plot
Dans le code R ci-dessous, les couleurs de remplissage du box plot sont automatiquement contrôlées par les niveaux de la variable dose:
# Utiliser une couleur unique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(fill='#A4A4A4', color="black")+
theme_classic()
# Changer la couleur par groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_boxplot()
p
Il est aussi possible de changer manuellement les couleurs de remplissage du box plot en utilisant les fonctions:
- scale_fill_manual() : pour utiliser des couleurs personnalisées
- scale_fill_brewer() : pour utiliser les palettes de couleurs du package RColorBrewer
- scale_fill_grey() : pour utiliser la palette de couleurs grises
# Utiliser des couleurs personnalisées
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Utiliser les palettes RColorBrewer
p+scale_fill_brewer(palette="Dark2")
# Utiliser la palette de couleurs grises
p + scale_fill_grey() + theme_classic()
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
Changer la position de la légende
p + theme(legend.position="top")
p + theme(legend.position="bottom")
p + theme(legend.position="none") # supprimer la légende
Les valeurs possibles pour l’argument legend.position sont : “left”,“top”, “right”, “bottom”.
Lire plus sur ggplot2 et légende: ggplot2 légende
Changer l’ordre des éléments dans la légende
La fonction scale_x_discrete peut être utilisée pour changer l’ordre des éléments en “2”, “0.5”, “1” :
p + scale_x_discrete(limits=c("2", "0.5", "1"))
Box plot avec plusieurs groupes
# Changer la couleur des box plots par groupe
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_boxplot()
# Changer la position
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_boxplot(position=position_dodge(1))
p
Changer la couleur des box plots et ajouter des points :
# Ajouter des points
p + geom_dotplot(binaxis='y', stackdir='center',
position=position_dodge(1))
# Changer les couleurs
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
Box plots personnalisés
# Box plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(fill="gray")+
labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")+
theme_classic()
# Changer autumatiquement la couleur par groupes
bp <- ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_boxplot()+
labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")
bp + theme_classic()
Changer les couleurs de remplissage manuellement :
# Couleurs continues
bp + scale_fill_brewer(palette="Blues") + theme_classic()
# Couleurs discretes
bp + scale_fill_brewer(palette="Dark2") + theme_minimal()
# Gradient de couleurs
bp + scale_fill_brewer(palette="RdBu") + theme_minimal()
Lire plus sur ggplot2 et légende: ggplot2 légende
Infos
Cette analyse a été faite en utilisant le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.0)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!