Ce data.frame se comporte comme n’importe quel autre (même utilisation des fonctions str(), names()…).

head(dep)

plot() permet d’afficher le fond spatial pour toutes les variables dans la fenêtre graphique.

plot(dep)

exp_dep <- read_rds("~/CERISE/03-Espace-de-Diffusion/030_Structures_exploitations/3020_Recensements/RA_2020/01_BASES DIFFUSION RA2020/DEF_240112/RA2020_EXPLOITATIONS_240112.rds") |> 
  as_tibble(.name_repair = make_clean_names) |>
  filter(champ_geo == "1") |> 
  group_by(siege_dep) |> 
  summarise(n_exp = n(),
            n_exp_bio = sum(bio_fil, na.rm = TRUE)) |> 
  mutate(part_exp_bio = n_exp_bio / n_exp * 100)

head(exp_dep)

bio <- dep %>% 
  left_join(exp_dep, by = c("insee_dep" = "siege_dep"))
pal_div <- tmaptools::get_brewer_pal("PRGn", n = 7)

colorspace::specplot(pal_div)

library(RColorBrewer)
head(brewer.pal.info)

{.' .r} str(brewer.pal.info)

#| code-fold: true
#| results: hide
#| output: false

tmap_mode("plot")

library(classInt)
library(patchwork)

n_classes <- 5
methodes <- c("sd", "equal", "pretty", "quantile", "kmeans", "hclust", "bclust", 
              "fisher", "jenks", "dpih", "headtails")

generer <- function(methode) {
  cesures <- classIntervals(bio$part_exp_bio, style = methode, n = n_classes)
  palette <- viridisLite::viridis(length(cesures$brks) - 1)
  
  carte <- tm_shape(bio) +
    tm_polygons("part_exp_bio", 
                style = "fixed",
                breaks = cesures$brks,
                title = "%",
                palette = palette,
                border.col = "grey30",
                lwd = 0.25,
                legend.reverse = TRUE, 
                legend.format = list(text.separator = " - ")) +
    tm_layout(frame = FALSE, 
              bg.color = NA, 
              legend.outside = TRUE,
              legend.outside.position = "bottom")

  graphique <- density(bio$part_exp_bio)[c("x", "y")] |> 
    as_tibble() |> 
    mutate(intervalle = findInterval(x, cesures$brks)) |> 
    filter(between(intervalle, 1, length(cesures$brks) - 1)) |> 
    mutate(couleur = palette[intervalle]) |> 
    ggplot(aes(x, y)) +
    geom_area(aes(fill = couleur)) +
    geom_line() +
    scale_fill_identity() +
    labs(title = methode,
         x = "part des exploitations en bio (%)", 
         y = "densité") +
    theme_minimal()
  out <- tmap_grob(carte)
  return(graphique + out)
}

exemples_classes <- methodes |> 
   map(generer) 

#| echo: false
#| ouput: false
#| results: asis

# exemples_classes |> 
#   map(print)

for (i in seq_along(exemples_classes)) {
  print(exemples_classes[[i]])
  cat("\n\n")
}