Rémunérations dans la fonction publique de l’État - FT6.4-SL_Remunerations_FPE

Données - DGAFP

Figure 6.4-2 : salaires par catégorie socioprofessionnelle

Code
# La feuille "FPE toutes quotités, 2014+" est en euros mensuels, les deux
# autres en euros annuels (cf. SOMMAIRE de la source) : on annualise la
# première (x12) pour rendre les trois séries comparables.
fig2 |>
  filter(categorie == "Ensemble",
         indicateur %in% c("Salaire brut", "Traitement brut de base")) |>
  mutate(valeur = if_else(periode == "FPE toutes quotités, 2014+", valeur * 12, valeur)) |>
  ggplot(aes(x = annee, y = valeur, color = periode)) +
  geom_line(linewidth = 1) +
  geom_point() +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "€ par an",
       title = "Salaire moyen, ensemble des fonctionnaires civils de l'État",
       subtitle = "selon la source et le champ, 1994-2019 (séries mensuelles annualisées)") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(color = guide_legend(ncol = 1))

Code
fig2 |>
  filter(periode == "FPE toutes quotités, 2014+", indicateur == "Salaire brut",
         categorie %in% c("Ensemble des cadres de catégorie A (A et A+)", "Attachés et inspecteurs",
                           "Ingénieurs de l'État et assimilés", "Professeurs certifiés et agrégés")) |>
  ggplot(aes(x = annee, y = valeur, color = categorie)) +
  geom_line(linewidth = 1) +
  scale_color_brewer(palette = "Set2", name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "€ par mois",
       title = "Salaire moyen par catégorie socioprofessionnelle",
       subtitle = "fonction publique de l'État, toutes quotités, depuis 2014") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(color = guide_legend(ncol = 1))

Figures 6.4-5 et 6.4-6 : évolution des prix et des rémunérations

Code
fig56 |>
  filter(bloc == "En moyenne annuelle (en %)",
         indicateur %in% c("Prix y.c. tabac", "dont salaire moyen (brut) des ministères",
                            "dont RMPP (brute) des ministères")) |>
  ggplot(aes(x = annee, y = valeur, color = indicateur)) +
  geom_line(linewidth = 1) +
  geom_hline(yintercept = 0, color = "grey30") +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "% (glissement annuel)",
       title = "Évolution des prix et des rémunérations des agents de l'État",
       subtitle = "moyenne annuelle, ministères") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(color = guide_legend(ncol = 1))

Figure 6.4-7 : salaires mensuels moyens bruts et nets

Code
fig7 |>
  filter(population == "Ensemble des agents des ministères") |>
  ggplot(aes(x = annee, y = valeur, color = indicateur)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("salaire moyen brut" = "#1B3F8B", "salaire moyen net" = "#E8737A"), name = NULL) +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "€ par mois",
       title = "Salaire mensuel moyen des agents civils des ministères",
       subtitle = "brut et net, 2004-2019") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

Figures 6.4-9 et 6.4-10 : facteurs d’évolution du salaire

Code
fig910 |>
  filter(perimetre == "Ministères",
         indicateur %in% c("Inflation (y.c. tabac)", "Salaire moyen (brut)",
                            "RMPP brute (structure constante)", "RMPP brute (effet de carrière)")) |>
  ggplot(aes(x = annee, y = valeur, color = indicateur)) +
  geom_line(linewidth = 1) +
  geom_hline(yintercept = 0, color = "grey30") +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 9) +
  labs(x = NULL, y = "%",
       title = "Facteurs d'évolution du salaire moyen et de la RMPP",
       subtitle = "agents civils des ministères, depuis 1998") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
  guides(color = guide_legend(ncol = 1))

Figure 6.4-11 : répartition indiciaire par catégorie et sexe

Code
tranches_ordre <- c("<310", "310-319", "320-329", "330-339", "340-349", "350-359", "360-369",
                     "370-379", "380-399", "400-419", "420-439", "440-459", "460-479", "480-499",
                     "500-549", "550-599", "600-649", "650-699", "700-749", ">749", "Hors échelle",
                     "Indéterminé")
fig11 |>
  filter(groupe %in% c("catégorie A", "catégorie B", "catégorie C"), annee == max(annee)) |>
  mutate(tranche = fct_relevel(tranche, tranches_ordre)) |>
  group_by(groupe) |>
  mutate(part = valeur / sum(valeur)) |>
  ungroup() |>
  ggplot(aes(x = tranche, y = part, fill = groupe)) +
  geom_col(position = "dodge") +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  theme_minimal(base_size = 8) +
  labs(x = "Indice majoré", y = NULL,
       title = "Répartition des fonctionnaires civils par tranche d'indice majoré",
       subtitle = "par catégorie hiérarchique, dernière année disponible") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 45, hjust = 1))

Code
fig11 |>
  filter(groupe %in% c("Femmes", "Hommes"), annee == max(annee)) |>
  mutate(tranche = fct_relevel(tranche, tranches_ordre)) |>
  group_by(groupe) |>
  mutate(part = valeur / sum(valeur)) |>
  ungroup() |>
  ggplot(aes(x = tranche, y = part, fill = groupe)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("Femmes" = "#E8737A", "Hommes" = "#1B3F8B"), name = NULL) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  theme_minimal(base_size = 8) +
  labs(x = "Indice majoré", y = NULL,
       title = "Répartition des fonctionnaires civils par tranche d'indice majoré",
       subtitle = "selon le sexe, dernière année disponible") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 45, hjust = 1))

Figure V.3-17 : évolution des indices de traitement vs. prix

Code
v317 |>
  filter(indicateur %in% c("ITB-GI Ensemble", "Catégorie A", "Catégorie B", "Catégorie C")) |>
  group_by(indicateur) |>
  arrange(annee) |>
  mutate(valeur_cumulee = cumprod(1 + valeur / 100)) |>
  ungroup() |>
  ggplot(aes(x = annee, y = valeur_cumulee, color = indicateur)) +
  geom_line(linewidth = 1) +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "Base 1 en 2001",
       title = "Évolution cumulée de l'indice de traitement net-grille indiciaire",
       subtitle = "par catégorie hiérarchique, depuis 2001") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())

GIPA : garantie individuelle du pouvoir d’achat

Code
gipa |>
  filter(indicateur == "Bénéficiaires de la GIPA") |>
  ggplot(aes(x = annee, y = valeur)) +
  geom_col(fill = "#1B3F8B") +
  theme_minimal(base_size = 11) +
  labs(x = NULL, y = "Nombre de bénéficiaires",
       title = "Bénéficiaires de la garantie individuelle du pouvoir d'achat",
       subtitle = "2008-2019") +
  theme(panel.grid.minor = element_blank())

Code
gipa |>
  filter(indicateur %in% c("Moyenne", "Médiane", "1er quartile", "3e quartile")) |>
  mutate(indicateur = fct_relevel(indicateur, "1er quartile", "Médiane", "Moyenne", "3e quartile")) |>
  ggplot(aes(x = annee, y = valeur, color = indicateur)) +
  geom_line(linewidth = 1) +
  scale_color_brewer(palette = "Set1", name = NULL) +
  theme_minimal(base_size = 10) +
  labs(x = NULL, y = "€",
       title = "Dispersion des montants moyens de GIPA versés",
       subtitle = "depuis 2012") +
  theme(legend.position = "bottom", panel.grid.minor = element_blank())