Last data update: 20 Sep 2026, 08:20
Last compile: 20 Sep 2026, 08:24
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).
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.













# 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())
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.
`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))
`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")
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 .}