Impôt sur le revenu par région et département, 2014-2024

Données - DGFIP

Code
source(here::here("_rinit.R"))
invisible(Sys.setlocale("LC_TIME", "fr_FR.UTF-8"))
# cd ~/iCloud/website/data/dgfip; /usr/local/bin/R -e 'quarto::quarto_render("ir-regions-departements.qmd")'
# cd ~/iCloud/website/data; sh _status/run_all_silent.sh --only dgfip

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                       fig.width = 9, fig.height = 5.5, dpi = 150)
source(here::here("data", "dgfip", "_cartes.R"))

ds_path <- here::here("data", "dgfip", "ir-regions-departements.parquet")
ird <- arrow::read_parquet(ds_path)
fr <- scales::label_number(big.mark = " ", decimal.mark = ",")

theme_dgfip <- theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold"),
        plot.subtitle = element_text(colour = "grey35"),
        panel.grid.minor = element_blank())

Source : DGFIP, statistiques sur l’impôt sur le revenu. Nombre de foyers fiscaux (en milliers) et impôt sur le revenu net (en millions d’euros) par région et par département. Les années 2018 (prélèvement à la source), 2019 et suivantes comportent des changements de méthode signalés par des astérisques dans le fichier source.

Code
dep_foyer <- ird |>
  dplyr::filter(niveau == "département", !is.na(dep)) |>
  dplyr::select(annee, dep, nom, indicateur, valeur) |>
  tidyr::pivot_wider(names_from = indicateur, values_from = valeur) |>
  dplyr::rename(foyers = `Nombre de foyers fiscaux (milliers)`, impot = `Impôt sur le revenu net (millions d'euros)`) |>
  dplyr::mutate(impot_par_foyer = 1000 * impot / foyers)

Cartes départementales

Impôt net par foyer fiscal, 2024

Code
dep_sf <- departements_france() |>
  dplyr::left_join(dep_foyer |> dplyr::filter(annee == 2024), by = "dep")
carte(dep_sf, "impot_par_foyer", "Impôt sur le revenu net par foyer fiscal, 2024",
      "Départements de France métropolitaine, € par foyer (tous foyers)", "€ par foyer",
      palette = "plasma", direction = -1, limites = c(1000, 4500), labels = fr)

Évolution de l’impôt net, 2019-2024

Code
evol <- dep_foyer |>
  dplyr::filter(annee %in% c(2019, 2024)) |>
  dplyr::select(dep, annee, impot) |>
  tidyr::pivot_wider(names_from = annee, values_from = impot, names_prefix = "a") |>
  dplyr::mutate(evolution = a2024 / a2019 - 1)
dep_sf2 <- departements_france() |> dplyr::left_join(evol, by = "dep")
carte(dep_sf2, "evolution", "Évolution de l'impôt sur le revenu net, 2019-2024",
      "Départements de France métropolitaine", "Variation", palette = "viridis",
      labels = scales::label_percent(accuracy = 1))

Île-de-France

Code
idf_dep_sf <- dep_sf |> dplyr::filter(dep %in% IDF)
carte(idf_dep_sf, "impot_par_foyer", "Impôt net par foyer fiscal, Île-de-France, 2024",
      NULL, "€ par foyer", palette = "plasma", direction = -1, labels = fr) +
  geom_sf_text(aes(label = paste0(nom.x, "\n", fr(round(impot_par_foyer)), " €")), size = 2.8, colour = "white")

Régions

Impôt net par foyer, par région

Code
reg <- ird |>
  dplyr::filter(niveau == "région", !nom %in% c("Nombre Total", "Montant Total", "Residents Etrangers")) |>
  dplyr::select(annee, nom, indicateur, valeur) |>
  tidyr::pivot_wider(names_from = indicateur, values_from = valeur) |>
  dplyr::rename(foyers = `Nombre de foyers fiscaux (milliers)`, impot = `Impôt sur le revenu net (millions d'euros)`) |>
  dplyr::mutate(par_foyer = 1000 * impot / foyers)
reg |>
  dplyr::filter(annee == 2024) |>
  dplyr::mutate(nom = forcats::fct_reorder(nom, par_foyer)) |>
  ggplot(aes(nom, par_foyer)) + geom_col(fill = "#08519c") + coord_flip() +
  scale_y_continuous(labels = fr) +
  labs(title = "Impôt net par foyer fiscal, 2024", x = NULL, y = "€ par foyer") + theme_dgfip

Part de l’Île-de-France dans l’impôt net national

Code
reg |>
  dplyr::group_by(annee) |>
  dplyr::mutate(part = impot / sum(impot)) |>
  dplyr::filter(nom %in% c("Ile-De-France", "Auvergne Rhone Alpes", "Provence-Alpes-Cote -D'azur", "Occitanie", "Nouvelle Aquitaine")) |>
  ggplot(aes(annee, part, colour = nom)) + geom_line() + geom_point(size = 1) +
  scale_y_continuous(labels = scales::label_percent(accuracy = 1)) +
  scale_x_continuous(breaks = scales::breaks_pretty(8)) +
  labs(title = "Part des régions dans l'impôt net (hors DOM et non-résidents)", x = NULL, y = NULL, colour = NULL) +
  theme_dgfip + theme(legend.position = "bottom")

Les 15 départements où l’impôt net par foyer est le plus élevé, 2024

Code
dep_foyer |>
  dplyr::filter(annee == 2024) |>
  dplyr::slice_max(impot_par_foyer, n = 15) |>
  dplyr::mutate(nom = forcats::fct_reorder(nom, impot_par_foyer)) |>
  ggplot(aes(nom, impot_par_foyer)) + geom_col(fill = "#b2182b") + coord_flip() +
  scale_y_continuous(labels = fr) + labs(x = NULL, y = "€ par foyer") + theme_dgfip