Qui habite dans le parc locatif social en 2022 ? - IP2047

Données - INSEE

Figure 1a : part de ménages vivant dans le parc social par EPCI

Code
fig1a |>
  filter(!is.na(locataire_parc_social)) |>
  slice_max(locataire_parc_social, n = 30) |>
  mutate(epci = fct_reorder(epci, locataire_parc_social)) |>
  ggplot(aes(x = epci, y = locataire_parc_social)) +
  geom_col(fill = "#1B3F8B") +
  coord_flip() +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Part de ménages locataires du parc social",
       subtitle = "30 EPCI où cette part est la plus élevée, 2022") +
  theme(panel.grid.minor = element_blank(), panel.grid.major.y = element_blank())

Code
fig1a |>
  filter(!is.na(locataire_parc_social)) |>
  ggplot(aes(x = locataire_parc_social)) +
  geom_histogram(binwidth = 2, fill = "#1B3F8B", boundary = 0) +
  theme_minimal(base_size = 12) +
  labs(x = "% de ménages locataires du parc social", y = "Nombre d'EPCI",
       title = "Distribution de la part de ménages locataires du parc social",
       subtitle = "par EPCI, 2022") +
  theme(panel.grid.minor = element_blank())

Figure 1b : part de ménages vivant dans le parc social par EPT (Grand Paris)

Code
fig1b |>
  mutate(ept = fct_reorder(ept, locataire_parc_social)) |>
  ggplot(aes(x = ept, y = locataire_parc_social)) +
  geom_col(fill = "#1B3F8B") +
  coord_flip() +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "%",
       title = "Part de ménages locataires du parc social",
       subtitle = "par établissement public territorial de la métropole du Grand Paris, 2022") +
  theme(panel.grid.minor = element_blank(), panel.grid.major.y = element_blank())

Figure 2 : statut d’occupation selon le dixième de niveau de vie

Code
fig2 |>
  filter(niveau_vie != "Ensemble") |>
  select(niveau_vie, locataire_parc_social, locataire_secteur_libre, proprietaire_occupant) |>
  pivot_longer(-niveau_vie, names_to = "statut", values_to = "part") |>
  mutate(statut = recode(statut, locataire_parc_social = "Locataire du parc social",
                          locataire_secteur_libre = "Locataire du secteur libre",
                          proprietaire_occupant = "Propriétaire occupant"),
         statut = fct_relevel(statut, "Locataire du parc social", "Locataire du secteur libre",
                               "Propriétaire occupant")) |>
  ggplot(aes(x = niveau_vie, y = part, fill = statut)) +
  geom_col() +
  scale_fill_manual(values = c("Locataire du parc social" = "#1B3F8B",
                                "Locataire du secteur libre" = "#8FA8D8",
                                "Propriétaire occupant" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "%",
       title = "Statut d'occupation selon le niveau de vie",
       subtitle = "2022") +
  theme(legend.position = "bottom", axis.text.x = element_text(angle = 30, hjust = 1),
        panel.grid.minor = element_blank())

Figure 3 : type de ménage selon le statut d’occupation

Code
fig3 |>
  select(-ensemble) |>
  pivot_longer(-statut_occupation, names_to = "type_menage", values_to = "part") |>
  mutate(type_menage = recode(type_menage, personne_seule = "Personne seule",
                               famille_monoparentale = "Famille monoparentale",
                               couple_sans_enfant = "Couple sans enfant",
                               couple_avec_enfants = "Couple avec enfants", autre = "Autre"),
         type_menage = fct_relevel(type_menage, "Personne seule", "Famille monoparentale",
                                    "Couple sans enfant", "Couple avec enfants", "Autre")) |>
  ggplot(aes(x = statut_occupation, y = part, fill = type_menage)) +
  geom_col() +
  coord_flip() +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Type de ménage selon le statut d'occupation",
       subtitle = "2022") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Tableau complémentaire 1 : ancienneté et QPV par niveau de vie

Code
tc1 |>
  filter(niveau_vie != "Ensemble") |>
  ggplot(aes(x = niveau_vie, y = part, fill = caracteristique)) +
  geom_col(position = "dodge") +
  facet_wrap(~ section, ncol = 1, scales = "free_y") +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Répartition des ménages locataires du parc social",
       subtitle = "selon leur ancienneté et leur localisation en QPV, par niveau de vie, 2022") +
  theme(legend.position = "bottom", axis.text.x = element_text(angle = 30, hjust = 1),
        panel.grid.minor = element_blank())

Tableau complémentaire 2 : statut d’occupation selon l’âge

Code
tc2 |>
  select(age, locataire_parc_social, locataire_secteur_libre, proprietaire_occupant) |>
  pivot_longer(-age, names_to = "statut", values_to = "part") |>
  mutate(statut = recode(statut, locataire_parc_social = "Locataire du parc social",
                          locataire_secteur_libre = "Locataire du secteur libre",
                          proprietaire_occupant = "Propriétaire occupant"),
         statut = fct_relevel(statut, "Locataire du parc social", "Locataire du secteur libre",
                               "Propriétaire occupant")) |>
  ggplot(aes(x = age, y = part, fill = statut)) +
  geom_area() +
  scale_fill_manual(values = c("Locataire du parc social" = "#1B3F8B",
                                "Locataire du secteur libre" = "#8FA8D8",
                                "Propriétaire occupant" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = "Âge de la personne de référence", y = "%",
       title = "Statut d'occupation selon l'âge",
       subtitle = "2022") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Tableau complémentaire 3 : ressources perçues selon le statut d’occupation

Code
tc3 |>
  pivot_longer(-type_ressource, names_to = "statut", values_to = "part") |>
  mutate(statut = recode(statut, locataire_parc_social = "Locataire du parc social",
                          locataire_secteur_libre = "Locataire du secteur libre",
                          proprietaire_occupant = "Propriétaire occupant"),
         statut = fct_relevel(statut, "Locataire du parc social", "Locataire du secteur libre",
                               "Propriétaire occupant"),
         type_ressource = fct_reorder(type_ressource, part, .fun = max)) |>
  ggplot(aes(x = type_ressource, y = part, fill = statut)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("Locataire du parc social" = "#1B3F8B",
                                "Locataire du secteur libre" = "#8FA8D8",
                                "Propriétaire occupant" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "% de ménages",
       title = "Part de ménages percevant chaque type de ressources",
       subtitle = "selon le statut d'occupation, 2022") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())