ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
Ce tutoriel R décrit comment créer un dot plot avec le logiciel R et le package ggplot2.
La fonction geom_dotplot() est utilisée.
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.
Dot plots basiques
library(ggplot2)
# Dot plot basique
p<-ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_dotplot(binaxis='y', stackdir='center')
p
# Changer dotsize (taille) et stackratio (dispersion)
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_dotplot(binaxis='y', stackdir='center',
stackratio=1.5, dotsize=1.2)
# Tourner dot plot
p + coord_flip()
Choisir les groupes à afficher:
p + scale_x_discrete(limits=c("0.5", "2"))
Ajouter des statistiques descriptives sur un dot plot
La fonction stat_summary() peut être utilisée pour ajouter la moyenne/médiane et plus sur un dot plot.
Ajouter le point de la moyenne et de la médiane
# dot plot avec le point de la moyenne
p + stat_summary(fun.y=mean, geom="point", shape=18,
size=3, color="red")
# dot plot avec le point de la médiane
p + stat_summary(fun.y=median, geom="point", shape=18,
size=3, color="red")
Dot plot avec un box plot et un violin plot
# Ajouter un box plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()+
geom_dotplot(binaxis='y', stackdir='center')
# Ajouter un box plot de type notch
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(notch = TRUE)+
geom_dotplot(binaxis='y', stackdir='center')
# Ajouter un violin plot
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_violin(trim = FALSE)+
geom_dotplot(binaxis='y', stackdir='center')
Lire plus sur le box plot : ggplot2 box plot
Lire plus sur le violin plot : ggplot2 violin plot
Ajouter la moyenne et l’écart type
La fonction mean_sdl est utilisée. mean_sdl calcule la moyenne plus ou moins une constante fois l’écart type.
Dans le code R ci-dessous, la constante est spécifiée en utilisant l’argument mult (mult = 1). Par défaut mult = 2.
La moyenne +/- SD peut être ajoutée comme un crossbar ou un pointrange :
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_dotplot(binaxis='y', stackdir='center')
p + stat_summary(fun.data="mean_sdl", fun.args = list(mult = 1),
geom="crossbar", width=0.5)
p + stat_summary(fun.data=mean_sdl, fun.args = list(mult = 1),
geom="pointrange", color="red")
Notez que, vous pouvez aussi définir une fonction personnalisée pour calculer les statistiques descriptives comme suit.
# Fonction pour produire les
# statistiques descriptives (moyenne et +/- sd)
data_summary <- function(x) {
m <- mean(x)
ymin <- m-sd(x)
ymax <- m+sd(x)
return(c(y=m,ymin=ymin,ymax=ymax))
}
Utiliser une fonction personnalisée :
p + stat_summary(fun.data=data_summary, color="blue")
Changer la couleur des dot plots par groupes
Dans le code R ci-dessous, la couleur de remplissage du dot plot est automatiquement contrôlée par les niveaux de la variable dose:
# Utiliser une couleur de remplissage unique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_dotplot(binaxis='y', stackdir='center', fill="#FFAAD4")
# Changer la couleur des dot plots par groupe
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_dotplot(binaxis='y', stackdir='center')
p
Il est aussi possible de changer manuellement les couleurs de remplissage du dot 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"))
Dot plot avec plusieurs groupes
# Changer la couleur des dot-plots par groupe
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_dotplot(binaxis='y', stackdir='center')
# Changer la position
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_dotplot(binaxis='y', stackdir='center',
position=position_dodge(0.8))
p
Change les couleurs du dot plot et ajouter des box plots :
# Changer les couleurs
p+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Ajouter des box plots
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_boxplot(fill="white")+
geom_dotplot(binaxis='y', stackdir='center')
# Changer la position
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_boxplot(position=position_dodge(0.8))+
geom_dotplot(binaxis='y', stackdir='center',
position=position_dodge(0.8))
Dot plots personnalisés
# Dot plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()+
geom_dotplot(binaxis='y', stackdir='center')+
labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")+
theme_classic()
# Changer la couleur par groupes
dp <-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_dotplot(binaxis='y', stackdir='center')+
labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")
dp + theme_classic()
Changer les couleurs de remplissage manuellement:
# Couleurs continues
dp + scale_fill_brewer(palette="Blues") + theme_classic()
# Couleurs discretes
dp + scale_fill_brewer(palette="Dark2") + theme_minimal()
# Gradient de couleurs
dp + scale_fill_brewer(palette="RdBu") + theme_minimal()
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
Infos
Cette analyse a été faite en utilisant le logiciel R (ver. 3.2.4) et le package ggplot2 (ver. 2.1.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!