3.3 Diagramme en violon
Le graphique en violon est constitué de deux graphiques de densité en miroir. Le résultat fait penser un peu à un violon pour une distribution bimodale. Cette représentation est visuellement très convainquante lorsque la variable étudiée contient suffisamment d’observations pour permettre de déterminer précisément sa distribution (plusieurs dizaines ou centaines d’individus mesurés).
Les instructions en R pour produire un diagramme en violon à l’aide de la fonction chart()
sont :
# Importation du jeu de données
zooplankton <- read("zooplankton", package = "data.io", lang = "FR")
# Réduction du jeu de données
zooplankton_sub <- filter(zooplankton,
class %in% c("Annélide", "Calanoïde", "Cyclopoïde", "Décapode"))
# Réalisation du graphique
chart(data = zooplankton_sub, size ~ class) +
geom_violin()
Ici, la formule fournie à chart()
indique la variable numérique à représenter par un graphe de densité dans le terme de gauche, et la variable facteur qui découpe l’échantillon en classes à droite : YNUM (size) ~ XFACT (class)
. Pour réaliser un graphique de densité vous devez ensuite ajouter la fonction geom_violin()
. Vous pouvez aussi utiliser %fill=%
pour colorer vos différents graphes en fonction de la variable facteur également, comme dans la Fig. 3.10.
Pièges et astuces
Parfois, les labels sur l’axe des abscisses d’un diagramme en violon apparaissent trop rapprochés et se chevauchent, comme ci-dessous.
chart(data = zooplankton, size ~ class) +
geom_violin()
La fonction coord_flip()
permute les axes. Ainsi les labels ne se chevauchent plus sur l’axe des ordonnées.
chart(data = zooplankton, size ~ class) +
geom_violin() +
coord_flip()
Le package ggridges propose une seconde solution basée sur le principe de graphique de densité avec la fonction geom_density_ridges()
qui crée un graphique en lignes de crêtes. Attention : remarquez que la notation est ici inverse du diagramme en violon, soit XFACT (class) ~ YNUM (size)
!
chart(data = zooplankton, class ~ size) +
ggridges::geom_density_ridges()