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