Taux d’effort en logement. En prenant en compte le coût du service de logement, les propriétaires français sont bien placés en Europe - IA39

Données - INSEE

Figure 1 : trois versions du taux d’effort, 2008-2015

Code
fig1 |>
  pivot_longer(-c(concept, annee), names_to = "statut", values_to = "taux") |>
  mutate(statut = recode(statut, ensemble = "Ensemble",
                          proprietaire_non_accedant = "Propriétaire non accédant",
                          proprietaire_accedant = "Propriétaire accédant",
                          locataire_secteur_libre = "Locataire du secteur libre",
                          locataire_secteur_social = "Locataire du secteur social"),
         statut = fct_relevel(statut, ordre_statuts),
         concept = fct_relevel(concept, ordre_concepts)) |>
  ggplot(aes(x = annee, y = taux, color = statut)) +
  geom_line(linewidth = 1) +
  geom_point(size = 1.5) +
  facet_wrap(~ concept, nrow = 1) +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Trois versions du taux d'effort selon le statut d'occupation",
       subtitle = "2008-2015") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 45, hjust = 1)) +
  guides(color = guide_legend(ncol = 2))

Code
fig1 |>
  mutate(concept = fct_relevel(concept, ordre_concepts)) |>
  ggplot(aes(x = annee, y = ensemble, color = concept)) +
  geom_line(linewidth = 1) +
  geom_point() +
  scale_color_brewer(palette = "Dark2", name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "%",
       title = "Taux d'effort de l'ensemble des ménages selon la définition retenue",
       subtitle = "2008-2015") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 2 : taux d’effort “dépenses effectives” et “2 marchés” en Europe

Code
fig2 |>
  mutate(pays = fct_reorder(pays, taux_effort_depenses_effectives)) |>
  ggplot(aes(x = pays, y = taux_effort_depenses_effectives)) +
  geom_col(fill = "#1B3F8B") +
  facet_wrap(~ groupe, ncol = 1, scales = "free_y") +
  coord_flip() +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Taux d'effort « dépenses effectives » en Europe",
       subtitle = "2014") +
  theme(panel.grid.minor = element_blank(), strip.text = element_text(size = 9))

Code
fig2 |>
  filter(groupe == "Ensemble des ménages", !is.na(taux_effort_2_marches)) |>
  select(pays, taux_effort_depenses_effectives, taux_effort_2_marches) |>
  pivot_longer(-pays, names_to = "concept", values_to = "taux") |>
  mutate(concept = recode(concept, taux_effort_depenses_effectives = "Dépenses effectives",
                           taux_effort_2_marches = "2 marchés"),
         pays = fct_reorder(pays, taux, .fun = max)) |>
  ggplot(aes(x = pays, y = taux, fill = concept)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("Dépenses effectives" = "#8FA8D8", "2 marchés" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Taux d'effort « dépenses effectives » vs. « 2 marchés »",
       subtitle = "ensemble des ménages, pays où les deux concepts sont disponibles, 2014") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Code
fig2 |>
  filter(groupe == "Ensemble des ménages") |>
  mutate(pays = fct_reorder(pays, part_proprietaires)) |>
  ggplot(aes(x = pays, y = part_proprietaires)) +
  geom_col(fill = "#E8737A") +
  coord_flip() +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Part de propriétaires parmi l'ensemble des ménages",
       subtitle = "2014") +
  theme(panel.grid.minor = element_blank())

Figure encadré : loyers fictifs et opportunités financières manquées

Code
fig_encadre |>
  filter(str_starts(indicateur, "Opportunité")) |>
  mutate(statut = if_else(str_detect(indicateur, "non accédant"), "Propriétaire non accédant",
                           "Propriétaire accédant")) |>
  ggplot(aes(x = annee, y = valeur, fill = statut)) +
  geom_col(position = "dodge") +
  geom_hline(yintercept = 0, color = "grey30") +
  scale_fill_manual(values = c("Propriétaire non accédant" = "#1B3F8B",
                                "Propriétaire accédant" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "€ par an",
       title = "Opportunité financière manquée annuelle moyenne",
       subtitle = "liée à la variation des prix de l'ancien, 2008-2015") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Code
fig_encadre |>
  filter(str_starts(indicateur, "Loyer fictif")) |>
  mutate(statut = if_else(str_detect(indicateur, "non accédant"), "Propriétaire non accédant",
                           "Propriétaire accédant")) |>
  ggplot(aes(x = annee, y = valeur, color = statut)) +
  geom_line(linewidth = 1) +
  geom_point() +
  scale_color_manual(values = c("Propriétaire non accédant" = "#1B3F8B",
                                 "Propriétaire accédant" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "€ par an",
       title = "Loyer fictif annuel moyen",
       subtitle = "2008-2015") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())