Pyramide des âges & ggplot2
Article mis en ligne le 15 décembre 2021
dernière modification le 16 décembre 2021

par Philippe MICHEL

Un barplot un peu particulier bien pratique pour comparer visuellement deux populations.

Partons d’un data.frame nommé cas contenant au moins les deux rubriques :

  • age numérique
  • sexe factorielle à deux niveaux "H" & "F"

Et traçons la pyramide des âges soit un barplot horizontal distinguant les hommes des femmes. Tout d’abord créons une variable factorielle contenant les âges classés par dizaines que nous appellerons cut.age :
 cas$cut.age <- cut(cas$age,seq(0,100,10))
Puis commençons à tracer notre graphique avec les dames en rose & les messieurs en bleu (quelle originalité !). Comme le graphique est pivoté à l’horizontale les axes sont inversés & les réglages de l’axe de y sont sur l’ordonnée.

  1. pyrph <- function(dfx,
  2.            age = age,
  3.            sexe = sexe,
  4.            ff = "F",
  5.            mm = "M",
  6.            titre = "Pyramide des âges") {
  7.     ggplot(dfx) +
  8.       aes(x = {{age}}, fill = {{sexe}}) +
  9.       geom_bar(data = subset(dfx, {{sexe}} == ff),
  10.                aes(y = ..count.. * (-1))) +
  11.       geom_bar(data = subset(dfx, {{sexe}} == mm)) +
  12.       scale_fill_manual(values = c("pink", "light blue")) +
  13.       coord_flip() +
  14.       labs(title = titre) +
  15.       theme_light() +
  16.       theme(
  17.         plot.title = element_text(size = 16, face = "bold"),
  18.         axis.title.x = element_blank(),
  19.         axis.title.y = element_blank(),
  20.         axis.text.x = element_blank(),
  21.         axis.text.y =  element_text(size = 12, face = "bold"),
  22.         legend.position = "bottom",
  23.         legend.title = element_blank(),
  24.       )
  25.   }

Télécharger

Volontairement je n’ai pas modifier le graphisme de base en jouant sur les polices, les traits etc. pour garder un code simple.