ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
- Préparer les données
- Stripcharts basiques
- Ajouter des statistiques descriptives sur un stripchart
- Changer les types de points par groupes
- Changer la couleur par groupes
- Changer la position de la légende
- Changer l’ordre des éléments dans la légende
- Stripchart avec plusieurs groupes
- Stripcharts personnalisés
- Infos
Ce tutoriel R décrit comment créer un stripchart avec le logiciel R et le package ggplot2. Le stripchart correspond à un nuage de points sur une dimension. Ce type de graphique est beaucoup plus adapté qu’un box plot lorsque la taille des échantillons est petite.
La fonction geom_jitter() 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.
Stripcharts basiques
library(ggplot2)
# Stripcharts basiques
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_jitter()
# Changer l'argument position
# 0.2 : dégré de dispersion sur l'axe des x
p<-ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_jitter(position=position_jitter(0.2))
p
# Tourner le stripchart
p + coord_flip()
Choisir les groupes à afficher:
p + scale_x_discrete(limits=c("0.5", "2"))
Changer le type et la taille des points :
# Changer la taille des points
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_jitter(position=position_jitter(0.2), cex=1.2)
# Changer le type de point (shape)
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_jitter(position=position_jitter(0.2), shape=17)
Lire plus sur les types de points : ggplot2 types de points
Ajouter des statistiques descriptives sur un stripchart
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
# stripchart avec le point de la moyenne
p + stat_summary(fun.y=mean, geom="point", shape=18,
size=3, color="red")
# stripchart avec le point de la médiane
p + stat_summary(fun.y=median, geom="point", shape=18,
size=3, color="red")
Stripchart avec un box plot et un violin plot
# Ajouter un box plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()+
geom_jitter(position=position_jitter(0.2))
# Ajouter un box plot de type notch
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot(notch = TRUE)+
geom_jitter(position=position_jitter(0.2))
# Ajouter un violin plot
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_violin(trim = FALSE)+
geom_jitter(position=position_jitter(0.2))
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_jitter(position=position_jitter(0.2))
p + stat_summary(fun.data="mean_sdl", mult=1,
geom="crossbar", width=0.5)
p + stat_summary(fun.data=mean_sdl, 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 les types de points par groupes
Dans le code R ci-dessous, la forme des points du stripchart est automatiquement contrôlée par les niveaux de la variable dose.
Il est aussi possible de changer manuellement le type de points en utilisant la fonction scale_shape_manual().
# Changer le type de points par groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, shape=dose)) +
geom_jitter(position=position_jitter(0.2))
p
# Changer le type de points manuellement
p + scale_shape_manual(values=c(1,17,19))
Lire plus sur les types de points : ggplot2 types de points
Changer la couleur par groupes
Dans le code R ci-dessous, la couleur des points est automatiquement contrôlée par les niveaux de la variable dose:
# Utiliser une couleur unique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_jitter(position=position_jitter(0.2), color="red")
# Changer la couleur par groupe
p<-ggplot(ToothGrowth, aes(x=dose, y=len, color=dose)) +
geom_jitter(position=position_jitter(0.2))
p
Il est aussi possible de changer manuellement les couleurs 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 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"))
Stripchart avec plusieurs groupes
# Changer la couleur des stripcharts par groupe
ggplot(ToothGrowth, aes(x=dose, y=len, color=supp)) +
geom_jitter(position=position_jitter(0.2))
# Changer la position : intervalle entre les groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, color=supp, shape=supp)) +
geom_jitter(position=position_dodge(0.8))
p
Change les couleurs du stripchart et ajouter des box plots :
# Changer les couleurs
p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Ajouter des box plots
ggplot(ToothGrowth, aes(x=dose, y=len, color=supp)) +
geom_boxplot(color="black")+
geom_jitter(position=position_jitter(0.2))
# Changer la position
ggplot(ToothGrowth, aes(x=dose, y=len, color=supp)) +
geom_boxplot(position=position_dodge(0.8))+
geom_jitter(position=position_dodge(0.8))
Stripcharts personnalisés
# Stripchart basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_boxplot()+
geom_jitter(position=position_jitter(0.2))+
labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")+
theme_classic()
# Changer la couleur et le type de points par groupes
p <- ggplot(ToothGrowth, aes(x=dose, y=len, color=dose, shape=dose)) +
geom_jitter(position=position_jitter(0.2))+
labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")
p + theme_classic()
Changer les couleurs manuellement:
# Couleurs continues
p + scale_color_brewer(palette="Blues") + theme_classic()
# Couleurs discretes
p + scale_color_brewer(palette="Dark2") + theme_minimal()
# Gradient de couleurs
p + scale_color_brewer(palette="RdBu")
Lire plus sur ggplot2 et les couleurs ici: ggplot2 couleurs
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!