ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données
- Pr?parer les donn?es
- Violins-plots basiques
- Ajouter des statistiques descriptives sur un violin plot
- Violin plot avec des points
- Changer la couleur des violins-plots par groupes
- Changer la position de la l?gende
- Changer l?ordre des ?l?ments dans la l?gende
- Violin plot avec plusieurs groupes
- Violins-plots personnalis?s
- Infos
Ce tutoriel R d?crit comment cr?er un violin plot avec le logiciel R et le package ggplot2.
Les violins-plots sont similaires aux box plots, except? qu?ils permettent de montrer la courbe de densit? de probabilit? des diff?rentes valeurs. Typiquement, les violins-plots pr?sentent un marqueur pour la m?diane des donn?es et l??cart interquartile, comme dans un box plot standard.
La fonction geom_violin() est utilis?e pour faire un violin plot.
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.
Violins-plots basiques
library(ggplot2)
# Violin plot basic
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_violin()
p
# Tourner le violin plot
p + coord_flip()
# Utiliser l'argument trim = FALSE
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_violin(trim=FALSE)
Notez que par d?faut trim = TRUE. Dans ce cas, la queue des violons est gomm?e.
Choisir les groupes ? afficher:
p + scale_x_discrete(limits=c("0.5", "2"))
Ajouter des statistiques descriptives sur un violin plot
La fonction stat_summary() peut ?tre utilis?e pour ajouter la moyenne/m?diane et plus sur un violin plot.
Ajouter le point de la moyenne et de la m?diane
# violin plot avec le point de la moyenne
p + stat_summary(fun.y=mean, geom="point", shape=23, size=2)
# violin plot avec le point de la m?diane
p + stat_summary(fun.y=median, geom="point", size=2, color="red")
Ajouter la m?diane et les quartiles
Une solution est d?utiliser la fonction geom_boxplot :
p + geom_boxplot(width=0.1)
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_violin(trim=FALSE)
p + stat_summary(fun.data="mean_sdl", mult=1,
geom="crossbar", width=0.2 )
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)
Violin plot avec des points
Des points peuvent ?tre ajout?s ? un violin plot en utilisant la fonction geom_dotplot() ou geom_jitter() :
# violin plot avec un dot plot
p + geom_dotplot(binaxis='y', stackdir='center', dotsize=1)
# Violin 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 violins-plots par groupes
Changer la couleur des traits des violins-plots
La couleur des traits du violin plot peut ?tre automatiquement contr?l?e par les niveaux de la variable dose:
# Changer la couleur des traits du violin plot par groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, color=dose)) +
geom_violin(trim=FALSE)
p
Il est aussi possible de changer manuellement la couleur des traits du violin 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 violin plot
Dans le code R ci-dessous, les couleurs de remplissage du violin 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_violin(trim=FALSE, fill='#A4A4A4', color="darkred")+
geom_boxplot(width=0.1) + theme_minimal()
# Changer la couleur par groupes
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_violin(trim=FALSE)
p
Il est aussi possible de changer manuellement les couleurs de remplissage du violin 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"))
Violin plot avec plusieurs groupes
# Changer la couleur des violins-plots par groupe
ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_violin()
# Changer la position
p<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=supp)) +
geom_violin(position=position_dodge(1))
p
Changer la couleur des violins-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"))
Violins-plots personnalis?s
# Violin plot basique
ggplot(ToothGrowth, aes(x=dose, y=len)) +
geom_violin(trim=FALSE, fill="gray")+
labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")+
geom_boxplot(width=0.1)+
theme_classic()
# Changer autumatiquement la couleur par groupes
dp <- ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_violin(trim=FALSE)+
geom_boxplot(width=0.1, fill="white")+
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.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!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)