Le parc locatif social - ip1715

Données - INSEE

Figure 1 : statuts d’occupation selon la taille de l’unité urbaine

Code
taille_ordre <- c("Communes rurales", "de 2 000 à 4 999 habitants", "de 5 000 à 9 999 habitants",
                   "de 10 000 à 19 999 habitants", "de 20 000 à 49 999 habitants",
                   "de 50 000 à 99 999 habitants", "de 100 000 à 199 999 habitants",
                   "de 200 000 à 1 999 999 habitants", "Unité urbaine de Paris", "Ensemble")
fig1 |>
  mutate(taille_uu = fct_relevel(taille_uu, taille_ordre),
         statut = fct_relevel(statut, statuts_ordre)) |>
  ggplot(aes(x = taille_uu, y = valeur / 100, fill = statut)) +
  geom_col(position = "stack") +
  coord_flip() +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = statuts_couleurs, name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = NULL,
       title = "Statuts d'occupation des logements",
       subtitle = "selon la taille de l'unité urbaine") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(fill = guide_legend(ncol = 2))

Figure 2 : âge de la personne de référence selon le statut d’occupation

Code
fig2 |>
  ggplot(aes(x = age, y = valeur / 100, color = statut)) +
  geom_line(linewidth = 1) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_color_manual(values = statuts_couleurs, name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = "Âge", y = NULL,
       title = "Distribution de l'âge de la personne de référence",
       subtitle = "selon le statut d'occupation") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 3 : niveau de vie selon le statut d’occupation

Code
fig3 |>
  ggplot(aes(x = niveau_vie, y = valeur / 100, color = statut)) +
  geom_line(linewidth = 1) +
  scale_x_continuous(labels = scales::comma_format(big.mark = " ")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_color_manual(values = statuts_couleurs, name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = "Niveau de vie annuel (€)", y = NULL,
       title = "Distribution des niveaux de vie",
       subtitle = "selon le statut d'occupation") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 4 : composition des ménages selon le statut d’occupation

Code
fig4 |>
  mutate(composition = fct_relevel(composition, "Personne vivant seule", "Couple sans enfant",
                                    "Couple avec enfants", "Famille monoparentale")) |>
  ggplot(aes(x = composition, y = valeur / 100, fill = statut)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = statuts_couleurs, name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = NULL,
       title = "Composition des ménages",
       subtitle = "selon le statut d'occupation du logement") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 5 : statuts d’occupation selon le pays de naissance

Code
origine_ordre <- c("France métropolitaine", "DOM et COM", "Reste de l’Europe",
                    "Magreb (Algérie, Maroc, Tunisie)", "Reste de l’Afrique", "Turquie",
                    "Reste du monde", "Ensemble")
fig5 |>
  mutate(origine = fct_relevel(origine, origine_ordre),
         statut = fct_relevel(statut, statuts_ordre)) |>
  ggplot(aes(x = origine, y = valeur / 100, fill = statut)) +
  geom_col(position = "stack") +
  coord_flip() +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  scale_fill_manual(values = statuts_couleurs, name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = NULL,
       title = "Statuts d'occupation des logements",
       subtitle = "selon le pays de naissance de la personne de référence") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(fill = guide_legend(ncol = 2))

Figure complémentaire 1 : part du parc social par unité urbaine

Code
fc1 |>
  ggplot(aes(x = part_parc_social / 100)) +
  geom_histogram(bins = 40, fill = "#1B3F8B") +
  geom_vline(xintercept = 0.30, color = "#E8737A", linetype = "dashed") +
  scale_x_continuous(labels = scales::percent_format(accuracy = 1)) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "Nombre d'unités urbaines",
       title = "Distribution de la part du parc locatif social",
       subtitle = "par unité urbaine (moyenne ≈ 30 %, ligne pointillée)") +
  theme(panel.grid.minor = element_blank())