Last data update: 29 Sep 2026, 16:09
Last compile: 29 Sep 2026, 16:21
fig1 |>
filter(is.na(section), caracteristique %in% c("Fonctionnaires", "Non-fonctionnaires (hors personnels médicaux)")) |>
select(caracteristique, fpe_salaire, fpt_salaire, fph_salaire, ensemble_salaire) |>
pivot_longer(-caracteristique, names_to = "fonction_publique", values_to = "salaire") |>
mutate(fonction_publique = recode(fonction_publique, fpe_salaire = "État", fpt_salaire = "Territoriale",
fph_salaire = "Hospitalière", ensemble_salaire = "Ensemble"),
fonction_publique = fct_relevel(fonction_publique, "État", "Territoriale", "Hospitalière", "Ensemble")) |>
ggplot(aes(x = fonction_publique, y = salaire, fill = caracteristique)) +
geom_col(position = "dodge") +
scale_fill_manual(values = c("Fonctionnaires" = "#1B3F8B", "Non-fonctionnaires (hors personnels médicaux)" = "#E8737A"),
name = NULL) +
theme_minimal(base_size = 11) +
labs(x = NULL, y = "€ par mois",
title = "Salaire net moyen en EQTP, fonctionnaires vs. non-fonctionnaires",
subtitle = "2024") +
theme(legend.position = "bottom", panel.grid.minor = element_blank())
fig1 |>
filter(is.na(section), caracteristique %in% c("Fonctionnaires", "Catégorie A", "Catégorie B", "Catégorie C",
"Non-fonctionnaires (hors personnels médicaux)")) |>
select(caracteristique, fpe_evolution, fpt_evolution, fph_evolution, ensemble_evolution) |>
pivot_longer(-caracteristique, names_to = "fonction_publique", values_to = "evolution") |>
mutate(fonction_publique = recode(fonction_publique, fpe_evolution = "État", fpt_evolution = "Territoriale",
fph_evolution = "Hospitalière", ensemble_evolution = "Ensemble"),
fonction_publique = fct_relevel(fonction_publique, "État", "Territoriale", "Hospitalière", "Ensemble"),
caracteristique = fct_relevel(caracteristique, "Catégorie A", "Catégorie B", "Catégorie C",
"Fonctionnaires", "Non-fonctionnaires (hors personnels médicaux)")) |>
ggplot(aes(x = caracteristique, y = evolution, fill = fonction_publique)) +
geom_col(position = "dodge") +
geom_hline(yintercept = 0, color = "grey30") +
coord_flip() +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 9) +
labs(x = NULL, y = "% (euros constants, IPC)",
title = "Évolution du salaire net moyen en EQTP entre 2023 et 2024",
subtitle = "en euros constants au sens de l'IPC") +
theme(legend.position = "bottom", panel.grid.minor = element_blank())
fig2a |>
select(annee, all_of(names(categories_labels))) |>
pivot_longer(-annee, names_to = "categorie", values_to = "salaire") |>
filter(!is.na(salaire)) |>
mutate(categorie = recode(categorie, !!!categories_labels),
categorie = fct_relevel(categorie, unname(categories_labels))) |>
ggplot(aes(x = annee, y = salaire, color = categorie)) +
geom_line(linewidth = 1) +
scale_color_brewer(palette = "Set1", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ 2024",
title = "Salaires nets moyens en EQTP, fonction publique de l'État",
subtitle = "euros constants (IPC), depuis 2000") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(color = guide_legend(ncol = 2))
plot_ipc_vs_ipch(fig2a, "Salaire réel dans la fonction publique de l'État depuis 2000")
fig2b |>
select(annee, all_of(names(categories_labels))) |>
pivot_longer(-annee, names_to = "categorie", values_to = "salaire") |>
filter(!is.na(salaire)) |>
mutate(categorie = recode(categorie, !!!categories_labels),
categorie = fct_relevel(categorie, unname(categories_labels))) |>
ggplot(aes(x = annee, y = salaire, color = categorie)) +
geom_line(linewidth = 1) +
scale_color_brewer(palette = "Set1", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ 2024",
title = "Salaires nets moyens en EQTP, fonction publique territoriale",
subtitle = "euros constants (IPC), depuis 2000") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(color = guide_legend(ncol = 2))
plot_ipc_vs_ipch(fig2b, "Salaire réel dans la fonction publique territoriale depuis 2000")
fig2c |>
select(annee, all_of(names(categories_labels))) |>
pivot_longer(-annee, names_to = "categorie", values_to = "salaire") |>
filter(!is.na(salaire)) |>
mutate(categorie = recode(categorie, !!!categories_labels),
categorie = fct_relevel(categorie, unname(categories_labels))) |>
ggplot(aes(x = annee, y = salaire, color = categorie)) +
geom_line(linewidth = 1) +
scale_color_brewer(palette = "Set1", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ 2024",
title = "Salaires nets moyens en EQTP, fonction publique hospitalière",
subtitle = "euros constants (IPC), depuis 2011") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(color = guide_legend(ncol = 2))
plot_ipc_vs_ipch(fig2c, "Salaire réel dans la fonction publique hospitalière depuis 2011")
fig2c |>
filter(!is.na(personnels_medicaux)) |>
ggplot(aes(x = annee, y = personnels_medicaux)) +
geom_line(linewidth = 1, color = "#1B3F8B") +
theme_minimal(base_size = 11) +
labs(x = NULL, y = "€ 2024",
title = "Salaire net moyen en EQTP des personnels médicaux",
subtitle = "fonction publique hospitalière, euros constants (IPC), depuis 2011") +
theme(panel.grid.minor = element_blank())
fig3 |>
filter(caracteristique %in% c("Ensemble, dont :", "Fonctionnaires",
"Non-fonctionnaires (hors personnels médicaux)")) |>
select(caracteristique, fpe_evolution, fpt_evolution, fph_evolution, ensemble_evolution) |>
pivot_longer(-caracteristique, names_to = "fonction_publique", values_to = "evolution") |>
mutate(fonction_publique = recode(fonction_publique, fpe_evolution = "État", fpt_evolution = "Territoriale",
fph_evolution = "Hospitalière", ensemble_evolution = "Ensemble"),
fonction_publique = fct_relevel(fonction_publique, "État", "Territoriale", "Hospitalière", "Ensemble"),
caracteristique = recode(caracteristique, "Ensemble, dont :" = "Ensemble")) |>
ggplot(aes(x = fonction_publique, y = evolution, fill = caracteristique)) +
geom_col(position = "dodge") +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 11) +
labs(x = NULL, y = "% (euros constants, IPC)",
title = "Évolution du salaire net moyen des personnes en place en 2023 et 2024",
subtitle = "en euros constants au sens de l'IPC") +
theme(legend.position = "bottom", panel.grid.minor = element_blank())
fig3 |>
filter(caracteristique %in% c("Ensemble, dont :", "Fonctionnaires",
"Non-fonctionnaires (hors personnels médicaux)")) |>
select(caracteristique, fpe_part, fpt_part, fph_part, ensemble_part) |>
pivot_longer(-caracteristique, names_to = "fonction_publique", values_to = "part") |>
mutate(fonction_publique = recode(fonction_publique, fpe_part = "État", fpt_part = "Territoriale",
fph_part = "Hospitalière", ensemble_part = "Ensemble"),
fonction_publique = fct_relevel(fonction_publique, "État", "Territoriale", "Hospitalière", "Ensemble"),
caracteristique = recode(caracteristique, "Ensemble, dont :" = "Ensemble")) |>
ggplot(aes(x = fonction_publique, y = part, fill = caracteristique)) +
geom_col(position = "dodge") +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 11) +
labs(x = NULL, y = "%",
title = "Part des effectifs 2024 présents en 2023",
subtitle = "2023-2024") +
theme(legend.position = "bottom", panel.grid.minor = element_blank())