Le compte des administrations publiques en 2025 - Baisse du déficit avec des recettes croissantes et des dépenses en ralentissement - ip2106

Données - INSEE

Figure 1 : principaux ratios de finances publiques

Code
fig1 |>
  mutate(ratio = str_remove(ratio, "[0-9]$")) |>
  ggplot(aes(x = annee, y = value)) +
  geom_col(fill = "#1B3F8B") +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  geom_text(aes(label = round(value, 1)), vjust = ifelse(fig1$value >= 0, -0.4, 1.2), size = 3) +
  facet_wrap(~ ratio, scales = "free_y") +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = NULL,
       title = "Principaux ratios de finances publiques",
       subtitle = "en % du PIB") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank())

Figure 2 : dépenses et recettes publiques entre 1995 et 2025

Code
fig2 |>
  select(annee, `Dépenses publiques` = depenses, `Recettes publiques` = recettes) |>
  pivot_longer(-annee, names_to = "serie", values_to = "valeur") |>
  ggplot(aes(x = annee, y = valeur, color = serie)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("Dépenses publiques" = "#E8737A", "Recettes publiques" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = NULL,
       title = "Dépenses et recettes publiques de 1995 à 2025",
       subtitle = "en points de PIB") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank())

Capacité (+) ou besoin (-) de financement

Code
fig2 |>
  ggplot(aes(x = annee, y = solde, fill = solde >= 0)) +
  geom_col() +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  scale_fill_manual(values = c("TRUE" = "#1B3F8B", "FALSE" = "#E8737A"), guide = "none") +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = NULL,
       title = "Capacité (+) ou besoin (-) de financement des administrations publiques",
       subtitle = "en points de PIB, 1995-2025") +
  theme(panel.grid.minor = element_blank())

Figure 3 : capacité ou besoin de financement par sous-secteur

Code
fig3 |>
  filter(administration != "Ensemble des administrations publiques") |>
  mutate(annee = factor(annee)) |>
  ggplot(aes(x = annee, y = solde_md_euros, fill = administration)) +
  geom_col() +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 13) +
  labs(x = NULL, y = NULL,
       title = "Capacité (+) ou besoin (-) de financement par sous-secteur",
       subtitle = "en milliards d'euros ; empilement = ensemble des administrations publiques") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank())

Figure 4 : principales dépenses et recettes des APU en 2025

Code
fig4 |>
  filter(categorie != "Solde", !str_detect(poste, "^Total des"),
         administration != "Ensemble des administrations publiques") |>
  mutate(poste = str_remove(poste, ",? dont :?$|[0-9]$"),
         poste = paste0(poste, " (", categorie, ")"),
         poste = fct_reorder(poste, montant, .fun = sum)) |>
  ggplot(aes(x = poste, y = montant, fill = administration)) +
  geom_col() +
  coord_flip() +
  facet_wrap(~ categorie, scales = "free", ncol = 1) +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "Milliards d'euros",
       title = "Principales dépenses et recettes des administrations publiques en 2025",
       subtitle = "empilement par sous-secteur") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Évolution 2025/2024 des principaux postes (ensemble des APU)

Code
fig4 |>
  filter(administration == "Ensemble des administrations publiques",
         categorie != "Solde", !str_detect(poste, "^Total des"), !is.na(evol)) |>
  mutate(poste = str_remove(poste, ",? dont :?$|[0-9]$"),
         poste = paste0(poste, " (", categorie, ")"),
         poste = fct_reorder(poste, evol)) |>
  ggplot(aes(x = poste, y = evol, fill = categorie)) +
  geom_col() +
  geom_hline(yintercept = 0, color = "grey40", linewidth = 0.4) +
  coord_flip() +
  scale_fill_manual(values = c("Dépenses" = "#E8737A", "Recettes" = "#1B3F8B"), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "Évolution 2025/2024 (%)",
       title = "Évolution 2025/2024 des principaux postes de dépenses et recettes",
       subtitle = "ensemble des administrations publiques") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())

Figure 5 : dette publique et dette publique nette

Code
fig5 |>
  filter(unite == "Md €") |>
  mutate(administration = fct_reorder(administration, dette_publique_brute)) |>
  select(administration, annee, `Dette publique brute` = dette_publique_brute,
         `Dette publique nette` = dette_publique_nette) |>
  pivot_longer(-c(administration, annee), names_to = "serie", values_to = "montant") |>
  mutate(annee = factor(annee)) |>
  ggplot(aes(x = administration, y = montant, fill = annee, alpha = serie)) +
  geom_col(position = position_dodge(width = 0.75), width = 0.7) +
  coord_flip() +
  scale_fill_manual(values = c("2024" = "#8FB0DE", "2025" = "#1B3F8B"), name = NULL) +
  scale_alpha_manual(values = c("Dette publique brute" = 1, "Dette publique nette" = 0.55), name = NULL) +
  theme_minimal(base_size = 12) +
  labs(x = NULL, y = "Milliards d'euros",
       title = "Dette publique brute et nette par sous-secteur",
       subtitle = "au 31 décembre 2024 et 2025") +
  theme(legend.position = "bottom",
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_blank())