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

Graphe en violon de la distribution de la taille en fonction des groupes taxonomiques dans un échantillon de zooplancton.

Figure 3.10: Graphe en violon de la distribution de la taille en fonction des groupes taxonomiques dans un échantillon de zooplancton.

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()
Distribution des tailles pour 4 groupes taxonomiques de zooplancton.

Figure 3.11: Distribution des tailles pour 4 groupes taxonomiques de zooplancton.

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() 
Distribution de tailles des 17 classes d'organismes planctoniques (diagramme en violon).

Figure 3.12: Distribution de tailles des 17 classes d’organismes planctoniques (diagramme en violon).

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()
Distribution de tailles des 17 classes d'organismes planctoniques (diagramme en violon avec l'ajout de la fonction `coord_flip()`).

Figure 3.13: Distribution de tailles des 17 classes d’organismes planctoniques (diagramme en violon avec l’ajout de la fonction 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()
Distribution des tailles des 17 classes d'organismes planctoniques (sous forme de graphique en lignes de crêtes).

Figure 3.14: Distribution des tailles des 17 classes d’organismes planctoniques (sous forme de graphique en lignes de crêtes).