Bonjour à toutes et à tous,

Aujourd’hui, je vais vous présenter comment créer un diagramme circulaire, aussi joliment appelé diagramme en camembert, avec le langage R. En effet, R propose une longue liste de fonctions pour créer tous types de graphiques, du diagramme en colonne, au linéaire, en passant par la fameuse boîte à moustache. Mais R ne dispose pas de fonction spécifique pour créer un diagramme circulaire. Pour y parvenir, il va falloir un peu bricoler.

Tout d’abord, chargeons la librairie préférée de tous les Data Scientists : Tidyverse !

library(tidyverse)
## Warning: le package 'tidyverse' a été compilé avec la version R 4.2.3
## Warning: le package 'lubridate' a été compilé avec la version R 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.1.8
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors

Maintenant, nous allons pouvoir créer un set de données avec lequel travailler, disons une liste de parfums de glace préférés (tout le monde aime les glaces) :

Tout_le_monde <- c("Anne", "Thomas", "Emma", "Nathan", "Julie", "Léo")
Parfums <- c("Chocolat", "Pistache", "Vanille", "Chocolat", "Chocolat", "Vanille")
Parfum_Préféré <- data.frame(Tout_le_monde, Parfums)
Parfum_Préféré
##   Tout_le_monde  Parfums
## 1          Anne Chocolat
## 2        Thomas Pistache
## 3          Emma  Vanille
## 4        Nathan Chocolat
## 5         Julie Chocolat
## 6           Léo  Vanille

Bien ! Maintenant qu’on a notre set de données, voyons ce qu’il donne avec un simple diagramme en colonne :

Parfum_Préféré %>% 
  ggplot(mapping = aes(x = Parfums, fill = Parfums)) +
  geom_bar()

Parfait. Il semblerait que ça soit le chocolat qui l’emporte ! Maintenant, place au bricolage. Tout d’abord on va devoir superposer toutes les colonnes les unes sur les autres :

Parfum_Préféré %>% 
  count(Parfums) %>% 
  ggplot(mapping = aes(x = "", y = n, fill = Parfums)) +
  geom_bar(stat = "identity", width = 1)

Voilà, ça ne ressemble pas à grand chose pour le moment, mais on y vient. Ensuite, il va nous falloir arranger ces colonnes en cercles :

Parfum_Préféré %>% 
  count(Parfums) %>% 
  ggplot(mapping = aes(x = "", y = n, fill = Parfums)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar()

C’est bon, on a un cercle, et même plusieurs. Il ne nous reste qu’à répartir chaque catégorie en parts d’un seul et même cercle, plutôt qu’en plusieurs cercles concentriques :

Parfum_Préféré %>% 
  count(Parfums) %>% 
  ggplot(mapping = aes(x = "", y = n, fill = Parfums)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0)

Et voilà ! On a notre diagramme circulaire ! On va juste retirer les axes x et y, comme ils ne nous servent plus à grand chose :

Parfum_Préféré %>% 
  count(Parfums) %>% 
  ggplot(mapping = aes(x = "", y = n, fill = Parfums)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  theme_void()

Et le tour est joué ! J’espère que cette petite démonstration aura été claire pour vous. Merci en tout cas d’avoir lu cet article jusqu’au bout !

En vous souhaitant une agréable journée/soirée,

Gabriel.