ggplot2 violin plot : Guide de démarrage rapide - Logiciel R et visualisation de données


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.

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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)

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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"))

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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")

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

Ajouter la m?diane et les quartiles

Une solution est d?utiliser la fonction geom_boxplot :

p + geom_boxplot(width=0.1)

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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")

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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)

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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))

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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()

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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()

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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"))

ggplot2 violin plot - Logiciel R et visualisation de donn?es

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

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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"))

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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()

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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()

ggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?esggplot2 violin plot - Logiciel R et visualisation de donn?es

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)


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

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!





Cette page a été vue 9771 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons