Après quelques recherches, j'ai réussi à trouver un code qui me permet de créer une pyramide des âges :
Code : Tout sélectionner
library(tidyverse)
library(truncnorm)
library(ggplot2)
#Création du dataframe
data = data.frame(sexe = c("homme", "homme", "homme", "homme", "homme", "homme", "femme", "femme", "femme", "femme", "femme", "femme"), cat_age = c("18-25", "26-35", '36-45', '46-55', '56-65', '65+', "18-25", "26-35", '36-45', '46-55', '56-65', '65+'), frequence = rtruncnorm(n = 12, a = 1, b = 50, mean = 25, sd = 12))
#Création d'un taux par sexe
data = data %>% group_by(sexe) %>% mutate(taux = frequence / sum(frequence) * 100)
#Création d'un indice de direction, pour la construction du graphique
data$direction = case_when(data$sexe == 'homme' ~ 1, TRUE ~ -1)
#Graphique
ggplot(data, aes(x = cat_age, y = taux * direction, fill = sexe)) + geom_bar(stat = "identity",width = 0.6, col = "black") + geom_hline(yintercept = 0) + coord_flip() + labs(x = "Age", y = "Proportion (%)", fill = "Sex") + scale_fill_discrete(drop = FALSE) + scale_y_continuous(labels = function(x){paste0(abs(x))}) + theme(text = element_text(size = 20), legend.title = element_blank())
Malheureusement, l'échelle est différente pour les deux sexes. Le score monte jusqu'à 30% pour les hommes, contre 20% pour les femmes :
https://zupimages.net/viewer.php?id=20/38/f32u.png
Comment pourrais-je centrer la légende, afin de ne pas avoir de décalage ?
Merci.