Last data update: 18 sept. 2026, 23:46
Last compile: 18 sept. 2026, 23:47
fig1a |>
filter(poste %in% postes_flux) |>
mutate(groupe = fct_relevel(groupe, paste0("D", 1:10)),
poste = fct_relevel(poste, postes_flux)) |>
ggplot(aes(x = groupe, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ par UC",
title = "Décomposition du revenu disponible brut des ménages",
subtitle = "par dixième de niveau de vie usuel, 2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
ordre_pcs <- c("Ouvriers", "Employés", "Professions intermédiaires",
"Cadres, indépendants, chefs d'entreprise", "Retraités")
fig1b |>
filter(poste %in% postes_flux, groupe %in% ordre_pcs) |>
mutate(groupe = fct_relevel(groupe, ordre_pcs), poste = fct_relevel(poste, postes_flux)) |>
ggplot(aes(x = groupe, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
coord_flip() +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ par UC",
title = "Décomposition du revenu disponible brut des ménages",
subtitle = "par catégorie socioprofessionnelle de la personne de référence, 2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
ordre_age <- c("18-29 ans", "30-39 ans", "40-49 ans", "50-64 ans", "65 ans ou plus")
fig1c |>
filter(poste %in% postes_flux, groupe %in% ordre_age) |>
mutate(groupe = fct_relevel(groupe, ordre_age), poste = fct_relevel(poste, postes_flux)) |>
ggplot(aes(x = groupe, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ par UC",
title = "Décomposition du revenu disponible brut des ménages",
subtitle = "par groupe d'âges du ménage, 2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
ordre_famille <- c("Personnes seules", "Familles monoparentales", "Couples sans enfant",
"Couples avec 1 ou 2 enfants", "Couples avec 3 enfants ou plus")
fig1d |>
filter(poste %in% postes_flux, groupe %in% ordre_famille) |>
mutate(groupe = fct_relevel(groupe, ordre_famille), poste = fct_relevel(poste, postes_flux)) |>
ggplot(aes(x = groupe, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
coord_flip() +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ par UC",
title = "Décomposition du revenu disponible brut des ménages",
subtitle = "par configuration familiale, 2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
fig2a |>
filter(poste != "Revenu disponible brut des ménages (RDB du S14)") |>
mutate(vingtieme = fct_relevel(vingtieme, paste0("V", 1:20))) |>
ggplot(aes(x = vingtieme, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "Md€",
title = "Composition du revenu disponible brut des ménages",
subtitle = "par vingtième de niveau de vie, 2023") +
theme(legend.position = "bottom", axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
fig2b |>
filter(poste != "Revenu disponible brut ajusté") |>
mutate(vingtieme = fct_relevel(vingtieme, paste0("V", 1:20))) |>
ggplot(aes(x = vingtieme, y = valeur, fill = poste)) +
geom_col() +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 9) +
labs(x = NULL, y = "Md€",
title = "Transferts directs et en nature",
subtitle = "par vingtième de niveau de vie, 2023") +
theme(legend.position = "bottom", axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
fig3a |>
filter(cinquieme != "Moyenne") |>
mutate(cinquieme = fct_relevel(cinquieme, paste0("C", 1:5)),
poste = fct_relevel(poste, "Revenu primaire brut (S14)", "Revenu disponible net (RDN)",
"Revenu disponible brut (RDB)", "Revenu disponible brut ajusté (RDBA)")) |>
ggplot(aes(x = cinquieme, y = valeur, color = poste, group = poste)) +
geom_line(linewidth = 1) +
geom_point() +
scale_color_brewer(palette = "Set1", name = NULL) +
theme_minimal(base_size = 11) +
labs(x = NULL, y = "€ par UC",
title = "Dispersion des revenus primaire et disponibles",
subtitle = "par cinquième de niveau de vie, 2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(color = guide_legend(ncol = 2))
fig3b |>
mutate(vingtieme = fct_relevel(vingtieme, paste0("V", 1:20)),
poste = fct_relevel(poste, "Revenu primaire brut", "Revenu disponible net de CCF",
"Revenu disponible brut", "Revenu disponible brut ajusté")) |>
ggplot(aes(x = vingtieme, y = valeur, color = poste, group = poste)) +
geom_line(linewidth = 1) +
scale_color_brewer(palette = "Set1", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "€ par UC",
title = "Revenu primaire, RDB, RDN et RDBA",
subtitle = "par vingtième de niveau de vie usuel, 2023") +
theme(legend.position = "bottom", axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.minor = element_blank()) +
guides(color = guide_legend(ncol = 2))
postes_4a <- c("Revenus salariaux super-bruts", "Revenus du patrimoine et mixtes des indépendants",
"Impôts sur les revenus et le patrimoine", "Cotisations sociales",
"Prestations en espèces et autres transferts",
"Transferts sociaux en nature (individualisables)")
fig4a |>
filter(poste %in% postes_4a, cinquieme != "Ensemble") |>
mutate(cinquieme = fct_relevel(cinquieme, paste0("C", 1:5)), poste = fct_relevel(poste, postes_4a)) |>
ggplot(aes(x = cinquieme, y = valeur, fill = poste)) +
geom_col(position = "dodge") +
geom_point(data = fig4a |> filter(poste == "Pouvoir d'achat du RDBA par UC des ménages",
cinquieme != "Ensemble") |>
mutate(cinquieme = fct_relevel(cinquieme, paste0("C", 1:5))),
aes(x = cinquieme, y = valeur), inherit.aes = FALSE, shape = 18, size = 3) +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "%",
title = "Évolution du pouvoir d'achat du RDBA par UC et de ses composantes",
subtitle = "par cinquième de niveau de vie, 2023 (losange : pouvoir d'achat total)") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
postes_4b <- c("Revenus salariaux super-bruts", "Revenus du patrimoine et mixtes des indépendants",
"Impôts sur les revenus et le patrimoine", "Cotisations sociales",
"Prestations en espèces et autres transferts")
fig4b |>
filter(poste %in% postes_4b, cinquieme != "Ensemble") |>
mutate(cinquieme = fct_relevel(cinquieme, paste0("C", 1:5)), poste = fct_relevel(poste, postes_4b)) |>
ggplot(aes(x = cinquieme, y = valeur, fill = poste)) +
geom_col() +
geom_point(data = fig4b |> filter(poste == "Pouvoir d'achat du RDB par UC des ménages",
cinquieme != "Ensemble") |>
mutate(cinquieme = fct_relevel(cinquieme, paste0("C", 1:5))),
aes(x = cinquieme, y = valeur), inherit.aes = FALSE, shape = 18, size = 3) +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 10) +
labs(x = NULL, y = "Points de %",
title = "Contributions à l'évolution du pouvoir d'achat du RDB par UC",
subtitle = "par cinquième de niveau de vie, 2023 (losange : pouvoir d'achat total)") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))
tc1_detail |>
pivot_wider(names_from = vingtieme, values_from = valeur) |>
gt() |>
tab_header(title = "Composition du revenu primaire brut des ménages",
subtitle = "par vingtième de niveau de vie, Md€, 2023") |>
fmt_number(columns = -poste, decimals = 1) |>
opt_interactive(use_search = FALSE, use_page_size_select = FALSE, use_pagination = FALSE)tc1_agregats |>
pivot_wider(names_from = vingtieme, values_from = valeur) |>
gt() |>
tab_header(title = "Principaux agrégats de revenu des ménages",
subtitle = "par vingtième de niveau de vie, Md€, 2023") |>
fmt_number(columns = -poste, decimals = 1) |>
opt_interactive(use_search = FALSE, use_page_size_select = FALSE, use_pagination = FALSE)tc2 |>
ggplot(aes(x = factor(annee), y = valeur, fill = type_revenu)) +
geom_col(position = "dodge") +
facet_wrap(~ indicateur, scales = "free_y") +
scale_fill_brewer(palette = "Set2", name = NULL) +
theme_minimal(base_size = 11) +
labs(x = NULL, y = NULL,
title = "Indicateurs d'inégalités selon le concept de revenu",
subtitle = "2022-2023") +
theme(legend.position = "bottom", panel.grid.minor = element_blank()) +
guides(fill = guide_legend(ncol = 2))