R Markdown

#script avancement dune blanche

# Packages
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 1. Jeu de données
dunes <- tibble(
  dune = c("Lette d'Huchet ",
           "Ilot d'Huchet ",
           "Lette à ocellés ",
           "Seuils de la Pipe rive gauche ",
           "Seuils de la Pipe rive droite ",
           "Pipe ",
           "Lette isolée ", 
           "Lette des Cazaous ",
           "Embouchure 1 ",
           "Embouchure 2 "),
  surf_2007 = c(2153, 2446, 16048.3, 3250.8, 3492.4, 6034, 959.4, 7879.3, 2580.9, 11036.1),
  surf_2024 = c(1978.6, 1863, 11745.8, 3117.5, 3070.8, 3386.6, 386.6, 6065.3, 1754.2, 7284.7)
) %>%
  mutate(
    perte_m2 = surf_2007 - surf_2024,
    part_2007 = surf_2007 / sum(surf_2007) * 100,
    part_2024 = surf_2024 / sum(surf_2024) * 100,
    part_perte = perte_m2 / sum(perte_m2) * 100)
# Vérification
print(dunes)
## # A tibble: 10 × 7
##    dune              surf_2007 surf_2024 perte_m2 part_2007 part_2024 part_perte
##    <chr>                 <dbl>     <dbl>    <dbl>     <dbl>     <dbl>      <dbl>
##  1 "Lette d'Huchet "     2153      1979.     174.      3.85     4.87       1.15 
##  2 "Ilot d'Huchet "      2446      1863      583       4.38     4.58       3.83 
##  3 "Lette à ocellés…    16048.    11746.    4302.     28.7     28.9       28.3  
##  4 "Seuils de la Pi…     3251.     3118.     133.      5.82     7.67       0.875
##  5 "Seuils de la Pi…     3492.     3071.     422.      6.25     7.55       2.77 
##  6 "Pipe "               6034      3387.    2647.     10.8      8.33      17.4  
##  7 "Lette isolée "        959.      387.     573.      1.72     0.951      3.76 
##  8 "Lette des Cazao…     7879.     6065.    1814      14.1     14.9       11.9  
##  9 "Embouchure 1 "       2581.     1754.     827.      4.62     4.32       5.43 
## 10 "Embouchure 2 "      11036.     7285.    3751.     19.7     17.9       24.6
#Fonction pour faire un diagramme en secteur

pie_plot <- function(data, valeur, etiquette, titre) {
  data %>%
    arrange(desc({{ valeur }})) %>%
    mutate(
      ymax = cumsum({{ valeur }}),
      ymin = lag(ymax, default = 0),
      label_pos = (ymax + ymin) / 2,
      label = paste0(dune, "\n", round({{ etiquette }}, 1), "%")
    ) %>%
    ggplot(aes(ymax = ymax, ymin = ymin, xmax = 4, xmin = 2, fill = dune)) +
    geom_rect(color = "white") +
    coord_polar(theta = "y") +
    xlim(c(0, 4)) +
    theme_void() +
    theme(
      legend.position = "right",
      plot.title = element_text(hjust = 0.5, face = "bold", size = 14)
    ) +
    labs(title = titre, fill = "Secteur")
  }
#Diagramme en secteur : surfaces 2024

p2024 <- pie_plot(
  data = dunes,
  valeur = surf_2024,
  etiquette = part_2024,
  titre = "Répartition des surfaces de dunes grises en 2024")
p2024

#Diagramme en secteur : surfaces 2007

p2007 <- pie_plot(
  data = dunes,
  valeur = surf_2007,
  etiquette = part_2007,
  titre = "Répartition des surfaces de dunes grises en 2007")
p2007

#Diagramme en secteur : perte en m² entre 2007 et 2024

pperte <- pie_plot(
  data = dunes,
  valeur = perte_m2,
  etiquette = part_perte,
  titre = "Contribution de chaque secteur à la perte totale de dune grise")

pperte

#Diagrammes en barres empilées

# Données
dunes <- tibble(
  dune = c("Lette d'Huchet",
           "Ilot d'Huchet",
           "Lette à ocellés",
           "Seuils de la Pipe rive gauche",
           "Seuils de la Pipe rive droite",
           "Pipe",
           "Lette isolée",
           "Lette des Cazaous",
           "Embouchure 1",
           "Embouchure 2"),
  surf_2007 = c(2153, 2446, 16048.3, 3250.8, 3492.4, 6034, 959.4, 7879.3, 2580.9, 11036.1),
  surf_2024 = c(1978.6, 1863, 11745.8, 3117.5, 3070.8, 3386.6, 386.6, 6065.3, 1754.2, 7284.7)
) %>%
  mutate(
    perte = surf_2007 - surf_2024
  ) %>%
  arrange(surf_2007)   # ou arrange(desc(surf_2007)) selon l'ordre voulu

# Format long
dunes_long <- dunes %>%
  select(dune, surf_2024, perte) %>%
  pivot_longer(
    cols = c(surf_2024, perte),
    names_to = "categorie",
    values_to = "surface"
  ) %>%
  mutate(
    categorie = factor(
      categorie,
      levels = c("perte", "surf_2024"),
      labels = c("Perte entre 2007 et 2024", "Surface en 2024")
    ),
    dune = factor(dune, levels = dunes$dune))
# Graphique
ggplot(dunes_long, aes(x = dune, y = surface, fill = categorie)) +
  geom_col() +
  coord_flip() +
  scale_fill_manual(
    values = c(
      "Perte entre 2007 et 2024" = "#F5E6A1",
      "Surface en 2024" = "grey")) +
  labs(
    title = "Surface des dunes grises en 2007 décomposée en surface restante et perte",
    x = "Secteurs de dunes grises
    en réserve",
    y = "Surface (m²)",
    fill = NULL
  ) +
  theme_minimal()

#Perte

dunes %>%
  mutate(pct_perte = 100 * perte / surf_2007) %>%
  ggplot(aes(x = reorder(dune, pct_perte), y = pct_perte)) +
  geom_col(fill = "#FF866A") +
  coord_flip() +
  labs(
    title = "Taux de perte de dune grise entre 2007 et 2024",
    x = "Secteurs de dunes grises en réserve",
    y = "Perte (%)"
  ) +
  theme_minimal()

#Contribution de chaque dune à la perte totale
dunes %>%
  mutate(contribution = 100 * perte / sum(perte)) %>%
  ggplot(aes(x = reorder(dune, contribution), y = contribution)) +
  geom_col(fill = "darkred") +
  coord_flip() +
  labs(
    title = "",
    x = "Secteurs de dunes grises dans la réserve",
    y = "Contribution (%)"
  ) +
  theme_minimal()

#Est ce que la perte est significative
wilcox.test(dunes$surf_2007, dunes$surf_2024, paired = TRUE)
## 
##  Wilcoxon signed rank exact test
## 
## data:  dunes$surf_2007 and dunes$surf_2024
## V = 55, p-value = 0.001953
## alternative hypothesis: true location shift is not equal to 0
#on peut rejeter le fait que les dunes restent stables