La privation matérielle et sociale en France en 2025 - IF380

Données - INSEE

Figure 1 : privation matérielle et sociale, 2013-2025

Code
fig1 |>
  ggplot(aes(x = annee, y = part, color = champ)) +
  geom_line(linewidth = 1) +
  geom_point() +
  scale_color_manual(values = c("France métropolitaine" = "#1B3F8B",
                                 "France hors Mayotte" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "%",
       title = "Proportion de personnes en situation de privation matérielle et sociale",
       subtitle = "2013-2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 2a : selon la situation vis-à-vis de l’emploi

Code
ordre_emploi <- c("En emploi, dont :", "Agriculteurs, artisans, commerçants et chefs d’entreprise",
                   "Cadres", "Professions intermédiaires", "Employés", "Ouvriers",
                   "Au chômage", "En retraite", "Ensemble")
fig2a |>
  mutate(groupe = fct_relevel(groupe, ordre_emploi)) |>
  ggplot(aes(x = groupe, y = part, fill = factor(annee))) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("2020" = "#8FA8D8", "2025" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Privation matérielle et sociale selon la situation vis-à-vis de l'emploi",
       subtitle = "2020 et 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 2b : selon la composition du ménage

Code
ordre_menage <- c("Personne seule", "Famille monoparentale", "Couple sans enfant",
                   "Couple avec un enfant", "Couple avec deux enfants",
                   "Couple avec trois enfants ou plus", "Ensemble")
fig2b |>
  filter(annee %in% c(2020, 2025)) |>
  mutate(groupe = fct_relevel(groupe, ordre_menage)) |>
  ggplot(aes(x = groupe, y = part, fill = factor(annee))) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("2020" = "#8FA8D8", "2025" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Privation matérielle et sociale selon la composition du ménage",
       subtitle = "2020 et 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 2c : selon le statut d’occupation du logement

Code
ordre_statut <- c("Propriétaire non accédant ou logé à titre gratuit", "Propriétaire accédant",
                   "Locataire du privé", "Locataire du parc social", "Ensemble")
fig2c |>
  mutate(groupe = fct_relevel(groupe, ordre_statut)) |>
  ggplot(aes(x = groupe, y = part, fill = factor(annee))) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("2020" = "#8FA8D8", "2025" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "%",
       title = "Privation matérielle et sociale selon le statut d'occupation du logement",
       subtitle = "2020 et 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 3 : proportion de personnes déclarant subir chaque privation

Code
fig3 |>
  filter(periode %in% c("Moyenne 2013-2019", "2025")) |>
  mutate(privation = fct_reorder(privation, part, .fun = max)) |>
  ggplot(aes(x = privation, y = part, fill = periode)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("Moyenne 2013-2019" = "#8FA8D8", "2025" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Proportion de personnes déclarant subir chaque privation",
       subtitle = "moyenne 2013-2019 et 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 4 : disposer d’une voiture selon le lieu d’habitation et le niveau de vie

Code
ordre_niveau_vie <- c("Quart modeste", "Quart intermédiaire bas", "Quart intermédiaire haut",
                       "Quart aisé", "Ensemble")
fig4 |>
  filter(lieu_habitation != "Ensemble") |>
  mutate(niveau_vie = fct_relevel(niveau_vie, ordre_niveau_vie),
         lieu_habitation = str_replace_all(lieu_habitation, "\\n", " ")) |>
  ggplot(aes(x = niveau_vie, y = dispose_voiture, fill = lieu_habitation)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Part des personnes disposant d'une voiture",
       subtitle = "selon le lieu d'habitation et le niveau de vie du ménage, 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 5a-5b : satisfaction et confiance selon la privation

Code
bind_rows(fig5a |> select(groupe, annee_2025, repartition_2025) |> mutate(indicateur = "Satisfaction dans la vie"),
          fig5b |> select(groupe, annee_2025, repartition_2025) |> mutate(indicateur = "Confiance envers les inconnus")) |>
  filter(groupe != "Ensemble") |>
  mutate(groupe = fct_relevel(groupe, "Aucune privation", "1 ou 2 privations", "3 ou 4 privations",
                               "En situation de privation matérielle et sociale – 5 privations ou plus")) |>
  ggplot(aes(x = groupe, y = annee_2025, fill = indicateur)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("Satisfaction dans la vie" = "#1B3F8B",
                                "Confiance envers les inconnus" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "Note sur 10",
       title = "Satisfaction dans la vie et confiance envers les inconnus",
       subtitle = "selon le niveau de privation matérielle et sociale, 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Tableau complémentaire 1 : répartition selon le nombre de privations, 2025

Code
tc1 |>
  mutate(niveau_difficultes = fct_inorder(niveau_difficultes)) |>
  ggplot(aes(x = niveau_difficultes, y = part)) +
  geom_col(fill = "#1B3F8B") +
  coord_flip() +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Répartition des personnes selon le nombre de privations rencontrées",
       subtitle = "2025") +
  theme(panel.grid.minor = element_blank())

Tableau complémentaire 2 : évolution de la confiance envers les inconnus

Code
tc2 |>
  filter(caracteristique != "Ensemble") |>
  mutate(caracteristique = fct_inorder(caracteristique)) |>
  ggplot(aes(x = caracteristique, y = annee_2025, fill = section)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ section, scales = "free_y", ncol = 2) +
  coord_flip() +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 8) +
  labs(x = NULL, y = "Note sur 10",
       title = "Niveau de confiance envers les inconnus",
       subtitle = "selon les caractéristiques sociodémographiques, 2025") +
  theme(panel.grid.minor = element_blank(), strip.text = element_text(size = 8))

Tableau complémentaire 3 : évolution de la privation matérielle et sociale

Code
tc3 |>
  filter(caracteristique != "Ensemble") |>
  mutate(caracteristique = fct_inorder(caracteristique)) |>
  ggplot(aes(x = caracteristique, y = annee_2025, fill = section)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ section, scales = "free_y", ncol = 2) +
  coord_flip() +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 8) +
  labs(x = NULL, y = "%",
       title = "Proportion en situation de privation matérielle et sociale",
       subtitle = "selon les caractéristiques sociodémographiques, 2025") +
  theme(panel.grid.minor = element_blank(), strip.text = element_text(size = 8))

Tableau complémentaire 4 : privation selon santé et diplôme

Code
tc4 |>
  filter(caracteristique != "Ensemble") |>
  mutate(caracteristique = fct_inorder(caracteristique)) |>
  ggplot(aes(x = caracteristique, y = annee_2025, fill = section)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ section, scales = "free_y", ncol = 1) +
  coord_flip() +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Proportion en situation de privation matérielle et sociale",
       subtitle = "selon le diplôme, l'état de santé et les limitations d'activité, 2025") +
  theme(panel.grid.minor = element_blank(), strip.text = element_text(size = 8))

Tableau complémentaire 5 : composition du ménage, ensemble vs. privation

Code
tc5 |>
  filter(annee == 2025, composition_menage != "Ensemble") |>
  mutate(composition_menage = fct_reorder(composition_menage, part, .fun = max)) |>
  ggplot(aes(x = composition_menage, y = part, fill = population)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(values = c("Ensemble des personnes" = "#8FA8D8",
                                "Personnes en situation de privation" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "%",
       title = "Répartition selon la composition du ménage",
       subtitle = "ensemble des personnes vs. personnes en situation de privation, 2025") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())