Les salaires par versant de la fonction publique en 2024 - ECRT2026_F29

Données - INSEE

Figure 1 : salaires 2024 par versant de la fonction publique

Code
fig1 |>
  filter(niveau == "Détail") |>
  mutate(caracteristique = fct_reorder(caracteristique, salaire)) |>
  ggplot(aes(x = caracteristique, y = salaire, fill = versant)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ versant, scales = "free_y", ncol = 1) +
  coord_flip() +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "€ par mois",
       title = "Salaire net moyen en EQTP par structure",
       subtitle = "2024") +
  theme(panel.grid.minor = element_blank(), strip.text = element_text(size = 9))

Code
fig1 |>
  filter(niveau == "Total") |>
  mutate(caracteristique = fct_reorder(caracteristique, salaire)) |>
  ggplot(aes(x = caracteristique, y = salaire)) +
  geom_col(fill = "#1B3F8B") +
  coord_flip() +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "€ par mois",
       title = "Salaire net moyen en EQTP par versant de la fonction publique",
       subtitle = "2024") +
  theme(panel.grid.minor = element_blank())

Code
fig1 |>
  filter(niveau == "Détail") |>
  mutate(caracteristique = fct_reorder(caracteristique, structure_ensemble)) |>
  ggplot(aes(x = caracteristique, y = structure_ensemble, fill = versant)) +
  geom_col() +
  coord_flip() +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "% de l'ensemble des effectifs de la fonction publique",
       title = "Structure des effectifs par structure",
       subtitle = "2024") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 2 : dispersion des salaires par versant

Code
fig2 |>
  filter(niveau == "Distribution") |>
  mutate(distribution = fct_relevel(distribution, "1er décile (D1)", "1er quartile (Q1)", "Médiane",
                                     "3e quartile (Q3)", "9e décile (D9)")) |>
  pivot_longer(c(fpe, fpt, fph), names_to = "versant", values_to = "salaire") |>
  mutate(versant = recode(versant, fpe = "Fonction publique de l'État", fpt = "Fonction publique territoriale",
                           fph = "Fonction publique hospitalière")) |>
  ggplot(aes(x = distribution, y = salaire, color = versant, group = versant)) +
  geom_line(linewidth = 1) +
  geom_point() +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "€ par mois",
       title = "Dispersion des salaires nets mensuels en EQTP selon le versant",
       subtitle = "2024") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figure 3 : dispersion des salaires selon la catégorie statutaire

Code
fig3 |>
  filter(niveau == "Catégorie") |>
  mutate(caracteristique = fct_relevel(caracteristique, "Catégorie A", "Catégorie B", "Catégorie C"),
         versant = fct_relevel(versant, "Fonction publique de l'État", "Fonction publique territoriale",
                                "Fonction publique hospitalière")) |>
  ggplot(aes(x = caracteristique, y = mediane, ymin = q1, ymax = q3, color = versant)) +
  geom_pointrange(position = position_dodge(width = 0.5)) +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "€ par mois (médiane, 1er-3e quartile)",
       title = "Salaire médian des fonctionnaires selon la catégorie",
       subtitle = "2024") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Code
fig3 |>
  filter(niveau == "Statut") |>
  mutate(caracteristique = str_wrap(caracteristique, 20),
         versant = fct_relevel(versant, "Fonction publique de l'État", "Fonction publique territoriale",
                                "Fonction publique hospitalière")) |>
  ggplot(aes(x = caracteristique, y = mediane, ymin = q1, ymax = q3, color = versant)) +
  geom_pointrange(position = position_dodge(width = 0.5)) +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "€ par mois (médiane, 1er-3e quartile)",
       title = "Salaire médian selon le statut et le versant",
       subtitle = "2024") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())