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)







Want to Learn More on R Programming and Data Science?

==> Subscribe to our Mailing List <==

* indicates required


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.


Suggestions


ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données
ggplot2 graduation des axes : Guide pour personnaliser les étiquettes des graduations - Logiciel R et visualisation de données
ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
ggplot2 barplots : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - Combiner plusieurs graphiques sur la même page - Logiciel R et visualisation de données
ggplot2 échelle et transformation des axes - Logiciel R et visualisation de données
ggplot2 titres : Titre principal, titre des axes et légendes - Logiciel R et visualisation de données
ggplot2 box plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 nuage de points: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 thèmes et couleurs de fond : les 3 éléments - Logiciel R et visualisation de données
ggplot2 textes : Ajouter du texte à un graphique - Logiciel R et visualisation de données
ggplot2 barres d'erreur : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 types de points - Logiciel R et visualisation de données
ggplot2 graphique en camembert: Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 histogramme : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 - ajouter une ligne droite à un graphe : Ligne horizontale, verticale et droite de régression
ggplot2
ggplot2 graphique linéaire : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 dot plot : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
ggplot2 type de traits : Comment changer le type de trait d'un graphique avec le logiciel R?
ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
ggplot2 ECDF graphique: Guide de démarrage rapide pour la fonction de répartition empirique - Logiciel R et visualisation de données
ggplot2 courbe de distribution : Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 stripchart (jitter): Guide de démarrage rapide - Logiciel R et visualisation de données
ggplot2 pivoter un graphique : Inverser et retourner le graphique - Logiciel R et visualisation de données
ggplot2 qq plot (quantile - quantile plot) : Guide de démarrage rapide - Logiciel R et visualisation de données

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