source(here::here("_rinit.R"))source(here::here("data", "paris", "_paris.R")) # arrondissements_sf()invisible(Sys.setlocale("LC_TIME", "fr_FR.UTF-8"))# cd ~/iCloud/website/data/paris; /usr/local/bin/R -e 'quarto::quarto_render("nombre-de-beneficiaires-paris-solidarite.qmd")'knitr::opts_chunk$set(echo =TRUE, message =FALSE, warning =FALSE,fig.width =8, fig.height =5, dpi =150)benef_path <- here::here("data", "paris", "nombre-de-beneficiaires-paris-solidarite.parquet")raw <- arrow::read_parquet(benef_path) |> dplyr::mutate(annee =as.integer(format(exercice, "%Y")),ar =suppressWarnings(as.integer(substr(arrondissement, 4, 5))))# 2026 (exercice en cours) porte plusieurs mises à jour par arrondissement :# on ne garde que le dernier décompte connu pour éviter de les additionner.benef <- raw |> dplyr::group_by(annee, ar) |> dplyr::slice_max(personnes_agees, n =1, with_ties =FALSE) |> dplyr::ungroup()annee_min <-min(benef$annee)annee_max <-max(benef$annee)arr_sf <-arrondissements_sf()theme_carte <-theme_void(base_size =12) +theme(plot.title =element_text(face ="bold"),plot.subtitle =element_text(colour ="grey35"),plot.margin =margin(5, 12, 5, 5))theme_barres <-theme_minimal(base_size =12) +theme(plot.title =element_text(face ="bold"),plot.subtitle =element_text(colour ="grey35"),panel.grid.major.y =element_blank())
Le nombre de bénéficiaires du dispositif Paris Solidarité (aide municipale complémentaire aux personnes âgées et aux personnes en situation de handicap à faibles ressources), par arrondissement, 2013-2026.
Code
benef |> dplyr::filter(annee ==max(annee) -1) |> dplyr::arrange(dplyr::desc(personnes_agees)) |> dplyr::transmute(Arrondissement = ar, `Personnes âgées`= personnes_agees,`Personnes handicapées`= personnes_handicapees) |>head(8) |> gt::gt() |> gt::tab_header(title =sprintf("8 arrondissements avec le plus de bénéficiaires en %d", annee_max -1)) |> gt::tab_options(table.width ="100%")
8 arrondissements avec le plus de bénéficiaires en 2025
Arrondissement
Personnes âgées
Personnes handicapées
20
2433
1022
19
2099
766
13
2067
795
18
1843
676
11
1479
516
15
1398
696
14
1305
677
17
1254
602
Évolution
Code
benef |> dplyr::group_by(annee) |> dplyr::summarise(`Personnes âgées`=sum(personnes_agees), `Personnes handicapées`=sum(personnes_handicapees),.groups ="drop") |> tidyr::pivot_longer(-annee, names_to ="categorie", values_to ="n") |>ggplot(aes(annee, n, colour = categorie)) +geom_line(linewidth =1) +geom_point(size =2) +scale_colour_manual(values =c("Personnes âgées"="#3b6f8a", "Personnes handicapées"="#c0392b"), name =NULL) +scale_y_continuous(labels = scales::label_number(big.mark =" ")) +scale_x_continuous(breaks = scales::breaks_width(2)) +labs(title ="Bénéficiaires de Paris Solidarité, toutes catégories",subtitle =sprintf("%d : exercice en cours, décompte provisoire", annee_max),x =NULL, y =NULL) + theme_barres +theme(legend.position ="bottom")
Par arrondissement
Code
cnt <- benef |> dplyr::filter(annee == annee_max -1, !is.na(ar)) |> dplyr::transmute(ar, total = personnes_agees + personnes_handicapees)arr_sf |> dplyr::left_join(cnt, by =c("c_ar"="ar")) |>ggplot() +geom_sf(aes(fill = total), colour ="white", linewidth =0.2) +scale_fill_viridis_c(option ="plasma", direction =-1, na.value ="grey92", name ="Bénéficiaires") +labs(title =sprintf("Bénéficiaires de Paris Solidarité par arrondissement (%d)", annee_max -1),subtitle ="Personnes âgées + personnes handicapées") + theme_carte
Personnes âgées vs personnes handicapées
Code
benef |> dplyr::filter(annee == annee_max -1, !is.na(ar)) |> dplyr::mutate(ar = forcats::fct_reorder(factor(ar), personnes_agees)) |> tidyr::pivot_longer(c(personnes_agees, personnes_handicapees), names_to ="categorie", values_to ="n") |>ggplot(aes(n, ar, fill = categorie)) +geom_col(width =0.7) +scale_fill_manual(values =c(personnes_agees ="#3b6f8a", personnes_handicapees ="#c0392b"),labels =c("Personnes âgées", "Personnes handicapées"), name =NULL) +labs(title =sprintf("Bénéficiaires par arrondissement (%d)", annee_max -1), x =NULL, y =NULL) + theme_barres +theme(legend.position ="bottom")