Taux de chômage localisés par zone d’emploi, T1 2003 - T2 2026 - chomage-zone-t1-2003-t2-2026

Données - INSEE

Structure

Les 14 zones d’emploi interrégionales (code 00XX) sont réparties dans le fichier source sous une catégorie unique « INTERRÉGIONAL » plutôt que dans leur(s) région(s) réelle(s) – les cartes par région ci-dessous les rattachent, elles, à chaque région concernée (via les contours zones_emploi_2020_details).

Cartes par région (dernier trimestre)

Une carte par région métropolitaine, zoomée sur son emprise, avec le nom de chaque zone d’emploi. Les zones d’emploi interrégionales apparaissent sur la carte de chacune des régions qu’elles chevauchent.

Carte de France par zone d’emploi (dernier trimestre)

Code
# France métropolitaine uniquement (les DOM ont une projection Lambert 93
# dégénérée, très loin du cadrage métropole -- cf. data/maps/zones_emploi_2020.R)
ze_metropole <- zones_emploi_2020_details |>
  filter(!CODE_REG %in% c("01", "02", "03", "04", "06")) |>
  pull(CODE_ZE)

`chomage-zone` |>
  filter(dernier_jour_du_trimestre == max(dernier_jour_du_trimestre)) |>
  rename(CODE_ZE = code_zone_d_emploi) |>
  right_join(zones_emploi_2020_details, by = "CODE_ZE") |>
  right_join(zones_emploi_2020 |> filter(CODE_ZE %in% ze_metropole), by = "CODE_ZE") |>
  ggplot() + aes(long, lat, group = group, subgroup = subgroup, fill = taux_chomage) +
  coord_equal() + theme_void() + geom_polygon(color = "white", linewidth = 0.1) +
  scale_fill_viridis_c(na.value = "grey90",
                       labels = percent_format(scale = 1),
                       name = "Taux de\nchômage") +
  labs(x = "", y = "") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank())

Taux de chômage moyen des zones d’emploi (France entière)

Moyenne non pondérée du taux de chômage sur l’ensemble des zones d’emploi (chaque zone compte pour un, indépendamment de sa population active) – à distinguer du taux de chômage national officiel, disponible sur la page TAUX-CHOMAGE.

Code
`chomage-zone` |>
  group_by(dernier_jour_du_trimestre) |>
  summarise(taux_chomage = mean(taux_chomage, na.rm = TRUE), .groups = "drop") |>
  ggplot() + geom_line(aes(x = dernier_jour_du_trimestre, y = taux_chomage / 100)) +
  theme_minimal() + xlab("") + ylab("Taux de chômage moyen (zones d'emploi)") +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Zones d’emploi les plus / les moins touchées par le chômage (dernier trimestre)

Code
`chomage-zone` |>
  filter(dernier_jour_du_trimestre == max(dernier_jour_du_trimestre)) |>
  {\(d) bind_rows(slice_max(d, taux_chomage, n = 15) |> mutate(groupe = "15 taux les plus élevés"),
                  slice_min(d, taux_chomage, n = 15) |> mutate(groupe = "15 taux les plus faibles"))}() |>
  mutate(zone_d_emploi = fct_reorder(zone_d_emploi, taux_chomage)) |>
  ggplot() + geom_col(aes(x = zone_d_emploi, y = taux_chomage / 100, fill = groupe)) +
  coord_flip() +
  facet_wrap(~groupe, scales = "free_y") +
  theme_minimal() + xlab("") + ylab("Taux de chômage") +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  scale_fill_viridis_d() +
  theme(legend.position = "none")

Évolution du taux de chômage sur 5 ans, par zone d’emploi

Code
date_max <- max(`chomage-zone`$dernier_jour_du_trimestre)
date_min <- date_max %m-% years(5)

`chomage-zone` |>
  filter(dernier_jour_du_trimestre %in% c(date_min, date_max)) |>
  select(code_zone_d_emploi, zone_d_emploi, region, dernier_jour_du_trimestre, taux_chomage) |>
  mutate(periode = ifelse(dernier_jour_du_trimestre == date_max, "recent", "ancien")) |>
  select(-dernier_jour_du_trimestre) |>
  distinct(code_zone_d_emploi, periode, .keep_all = TRUE) |>
  pivot_wider(names_from = periode, values_from = taux_chomage) |>
  filter(!is.na(recent), !is.na(ancien)) |>
  mutate(`Variation (points)` = round(recent - ancien, 1)) |>
  arrange(`Variation (points)`) |>
  rename(`Zone d'emploi` = zone_d_emploi, Région = region,
        !!paste("Taux", format(date_min, "%Y")) := ancien,
        !!paste("Taux", format(date_max, "%Y")) := recent) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}