La consommation des ménages en 2025 - La consommation des ménages ralentit en dépit d’une forte décélération des prix - IP2110

Données - INSEE

Figure 1 : évolution de la consommation des ménages par fonction

Code
fig1 |>
  filter(poste_principal) |>
  mutate(fonction = str_remove(fonction, ", dont :$"),
         fonction = fct_reorder(fonction, evol_volume_2025)) |>
  select(fonction, `2024` = evol_volume_2024, `2025` = evol_volume_2025) |>
  pivot_longer(-fonction, names_to = "annee", values_to = "evolution") |>
  ggplot(aes(x = fonction, y = evolution, fill = annee)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  coord_flip() +
  scale_fill_manual(values = c("2024" = "#8FB0DE", "2025" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = NULL,
       title = "Évolution en volume de la consommation des ménages par fonction",
       subtitle = "en %, 2024 et 2025") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Poids de chaque fonction dans la consommation, en 2025

Code
fig1 |>
  filter(poste_principal) |>
  mutate(fonction = str_remove(fonction, ", dont :$"),
         fonction = fct_reorder(fonction, valeur_2025_md_euros)) |>
  ggplot(aes(x = fonction, y = valeur_2025_md_euros)) +
  geom_col(fill = "#1B3F8B") +
  geom_text(aes(label = round(valeur_2025_md_euros)), hjust = -0.15, size = 3.5) +
  coord_flip(clip = "off") +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "Milliards d'euros",
       title = "Valeur de la consommation des ménages par fonction, en 2025") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Figure 2 : taux de croissance annuels moyens entre 2011-2019 et 2019-2025

Code
fig2 |>
  filter(!composante %in% c("Consommation effective des ménages", "Correction territoriale")) |>
  mutate(niveau = if_else(composante %in% c("Dépense de consommation des ménages", "APU", "ISBLSM"),
                           "Agrégat", "Composante")) |>
  ggplot(aes(x = taux_croissance_2011_2019, y = taux_croissance_2019_2025,
             size = poids_2025, color = niveau)) +
  geom_hline(yintercept = 0, color = "grey70", linewidth = 0.4) +
  geom_vline(xintercept = 0, color = "grey70", linewidth = 0.4) +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "grey70") +
  geom_point(alpha = 0.7) +
  ggrepel::geom_text_repel(aes(label = composante), size = 3, show.legend = FALSE, max.overlaps = 20) +
  scale_size_area(max_size = 14, name = "Poids en 2025 (%)") +
  scale_color_manual(values = c("Agrégat" = "#E8737A", "Composante" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 13) +
  labs(x = "Taux de croissance annuel moyen 2011-2019 (%)",
       y = "Taux de croissance annuel moyen 2019-2025 (%)",
       title = "Taux de croissance annuels moyens de la consommation des ménages",
       subtitle = "la surface de chaque bulle est proportionnelle au poids dans la consommation effective en 2025 ;\nligne pointillée = même rythme sur les deux périodes") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank())

Figure 3 : taux d’épargne et évolutions de la consommation, des prix et du revenu

Code
fig3 |>
  filter(indicateur == "Taux d'épargne (en % du revenu disponible brut)") |>
  ggplot(aes(x = annee, y = value)) +
  geom_col(fill = "#1B3F8B") +
  geom_hline(aes(yintercept = moyenne_2011_2019), linetype = "dashed", color = "#E8737A", linewidth = 1) +
  geom_text(aes(label = value), vjust = -0.4, size = 3.5) +
  scale_x_continuous(breaks = 2022:2025) +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = NULL,
       title = "Taux d'épargne des ménages",
       subtitle = "en % du revenu disponible brut ; ligne pointillée = moyenne 2011-2019") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank())

Consommation, prix et pouvoir d’achat

Code
fig3 |>
  filter(indicateur %in% c("Consommation effective (en volume)", "Prix de la consommation effective",
                            "Pouvoir d'achat du revenu disponible brut",
                            "Pouvoir d'achat du revenu disponible brut par UC1")) |>
  mutate(indicateur = str_wrap(indicateur, 25),
         annee = factor(annee)) |>
  ggplot(aes(x = annee, y = value, fill = indicateur)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  scale_fill_brewer(palette = "Paired", name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = NULL,
       title = "Consommation, prix et pouvoir d'achat",
       subtitle = "évolutions annuelles en % (ou en volume selon l'indicateur), 2022-2025") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank())