Accueil > R - Graphisme > Pyramide des âges & ggplot2

Pyramide des âges & ggplot2

mercredi 15 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.


Cette fonction fait partie du package baseph <https://github.com/philippemichel/baseph> .