Script : 03_selection_especes
Après avoir sélectionné les points de prélèvements et les opérations de pêche de l’aire géographique ciblée, un tri sur les données des espèces péchées durant ces opérations est réalisé. Il s’agit de retirer du jeu initial les données non nécessaires ou obsolètes pour notre étude.
library(tidyverse)
library(aspe)
library(ggrepel)
library(janitor)
library(scales)
load(file = "../processed_data/selection_pop_ope.rda")
Nous avons besoin de charger la table aspe des données de mesures individuelles (cette dernière est lourde, elle peut donc mettre un certain temps à charger).
rdata_tables <- misc_nom_dernier_fichier(
repertoire = "../../../../Liste_rouge_BFC/raw_data",
pattern = "^tables")
load(rdata_tables) # Chargement des données
mei_table <- misc_nom_dernier_fichier(
repertoire = "../../../../Liste_rouge_BFC/raw_data",
pattern = "^mei")
load(mei_table) # Chargement des données
Pour constituer la liste complètes des espèces à évaluer de la liste rouge régionale de BFC, on importe la base taxref_v18. Pour pouvoir ajouter les libéllés de nom d’espèces au jeu de donnée de base par la suite, on importe un dataframe avec les codes espèces de la BDD Aspe esp_code_alternatif.
base_tax_ref_aspe <- readxl::read_xlsx("../raw_data/ASPE_Suivi référentiel taxon_20250603 (1).xlsx", skip = 3)
base_tax_ref_uicn <- readr::read_delim('../raw_data/TAXREFv18.txt')
tax_ref_uicn <- base_tax_ref_uicn %>%
clean_names() %>%
select(
phylum,
classe,
ordre,
famille,
sous_famille,
cd_ref,
cd_nom,
nom_complet,
nom_valide,
nom_vern,
lb_nom,
fr
) %>%
filter(classe == "Actinopterygii" | classe == "Petromyzonti") %>%
select(cd_nom, classe, ordre, famille, nom_valide, nom_vern,lb_nom ) %>%
rename(code_taxref = cd_nom,
nom_commun = nom_vern,
nom_scientifique = lb_nom)
tax_ref_aspe <- base_tax_ref_aspe %>%
clean_names() %>%
rename(esp_code_alternatif = code_alternatif_aspe,
localite = hexagone_h_outre_mer_om,
nom_vernaculaire = nom_commun,
taxon = poisson_p_macro_crustaces_mc_amphibien_a) %>%
filter(localite == "H",
taxon == "P") %>%
select(esp_code_alternatif, nom_vernaculaire, nom_latin, code_taxref, esp_code_alternatif)
On importe également une liste d’espèces réalisé par l’OFB en 2016 avec les statut d’autochtonie qu’on appelera liste_esp_bfc.
liste_esp_bfc <- readxl::read_xlsx("../raw_data/espèces de poisson BFC.xlsx") %>%
rename(esp_code_alternatif = "Code espèce") %>%
mutate(esp_code_alternatif = fct_recode(esp_code_alternatif, "GTN" = "GOT")) # Correction de l'ancien code du gobie à tâche noire de GOT en GTN
Un nouveau jeu de données esp_ope_selection est créé à partir des stations et des opérations retenues dans la passerelle. Il contient les données spécifiques aux opérations : les résultats des pêches et certaines données de contexte (surface de pêche / date de pêche / effectifs / lots de poissons / données individuelles).
esp_ope_selection <- passerelle %>% # dataframe contenant toutes les espèces présentes dans les opérations de pêches sélectionnées
left_join(y=lot_poissons %>% # Ajout des lots de poissons
select(lop_id,
esp_id = lop_esp_id,
lop_effectif)) %>%
left_join(y= ref_espece %>% # Ajout des références des espèces péchées
select(esp_id,
esp_code_alternatif)) %>%
left_join(y=operation %>%
select(ope_id,
ope_surface_calculee, # Ajout des surfaces de pêches
passage$pas_numero)) %>%
mef_ajouter_ope_date() %>% # Ajout des dates de pêches
select(ope_id,
lop_effectif,
lop_id,
esp_code_alternatif,
annee,
ope_surface_calculee) %>%
distinct()
Dans le cadre de notre étude, seules les espèces de poissons d’eau douce nous intéressent. Nous retirons alors les autres espèces du jeu de données esp_ope_selection établis dans les paramètres (cf params : “especes_a_retier”)
Différents éco-types de Carpe (“CCX” _ “CMI” _ “CCU”) sont rassemblés sous un même code esp_code_alternatif : “CCO”.
“APP”,“ASA”, “OCL”, “PCC”,“PFL” sont retirées car ce sont des espèces d’écrevisses
“BRX”,“CAX”,“CCU”,“GOX”, “LPX”, “CYP” sont retirées car ce sont des espèces indéterminées.
“HBG” : Hybride Brème/Gardon
A finir la prise de décision !!! :
“CAA” est le nouveau code de “CAD”
“VAR” : arrivé de la vandoise rostrée où modification de l’identification de “VAN”?
“ROI” Rotengle italien ?
“GOU”=> “GOO” : à partir d’environ 2018 : changement d’identification le Goujon (GOU) devient le Goujon occitan (GOO)
esp_ope_selection <- esp_ope_selection %>%
mutate(esp_code_alternatif =
case_when(
esp_code_alternatif %in% c("CCX", "CMI", "CCU") ~ "CCO",
# Transformation CCX, CMI et CCU en CCO
TRUE ~ esp_code_alternatif
)) %>%
filter(!(esp_code_alternatif %in% params$especes_a_retirer)) %>% # Espèces à retirer
mutate(esp_code_alternatif = fct_recode(esp_code_alternatif, "CAA" = "CAD")) # Correction de l'ancien code du Carassin doré de CAD en CAA
Nous souhaitons obtenir une vision globale des données contenues dans le dataframe esp_ope_selection afin de savoir si les espèces sélectionnées dans la liste rouge régionale 2014 sont bien cohérentes avec les espèces contenues dans ce nouveau jeu de données (ayant eu une décenies de données ajoutées depuis la dernière LRR.
Pour obtenir un point de vue générale sur les différentes espèces contenues dans ce jeu de données, un graphique bivarié est réalisé : il représente le pourcentage d’occurrence des espèces en fonction de la densité surfacique moyenne des espèces sur les 20 dernières années. Ce graphique pourra alors nous indiquer quelles espèces sont majoritairement présentes sur le territoire, ainsi que pour lesquelles les donnée disponibles sont suffisantes pour pouvoir étudier leur évolution démographique.
Les densités surfaciques moyennes sont calculées pour chaque espèce à l’opération. Elles sont regroupées dans le dataframe ope_esp_densite.
ope_esp_densite <- esp_ope_selection %>%
group_by(ope_id,
esp_code_alternatif,
ope_surface_calculee) %>% # Ajout des surfaces d'opération
summarise(effectif= sum(lop_effectif)) %>% # Calcul des effectifs par espèces, par opérations
ungroup() %>%
mutate(valeur = effectif/ope_surface_calculee) # Densités surfaciques par espèces, par opérations
ope_esp_densite_cal <- ope_esp_densite %>% # Création d'un dataframe simplifié pour le futur calcul
select(ope_id,
esp_code_alternatif,
valeur)
# Calcul de la densité surfacique moyenne pour chaque espèce (toutes opérations confondues)
esp_densite_moyenne <- ope_esp_densite %>%
group_by(esp_code_alternatif) %>%
summarise(densite_moy = mean(valeur))
Les effectifs de chaque espèce sont calculés, à l’échelle de l’opération, sur les 30 dernières années de données dans esp_effectif :
esp_effectif <- ope_esp_densite %>% # Calcul de l'effectif total pour chaque espèce sur toutes les opérations
group_by(esp_code_alternatif) %>%
summarise(effectif_total = sum(effectif))
ggplot(esp_effectif,
aes(x = esp_code_alternatif, y = effectif_total, fill = effectif_total)) +
geom_col() +
scale_fill_gradient(low = "darkseagreen3", high = "darkseagreen4") +
scale_y_log10(
name = "Effectif total (échelle log10)",
breaks = c(1, 10, 100, 1000),
labels = comma
) +
coord_flip() +
theme_minimal() +
labs(x = "Espèces", y = "Effectif total") +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.major = element_line(color = "#ffffff"),
panel.grid.minor = element_line(color = "#ffffff"),
panel.background = element_rect(fill = "#faf0e6")
)
Pour construire le df esp_ope_selection, pusieurs jeu de donnée vont être fusionné :
tax_ref_uicn possède les nom commun et nom complet scientique des espèces de poissons.
tax_ref_aspe possède les codes espèces de la base aspe permettant des jointures entre tables.
liste_esp_bfc possède les codes espèces, une liste des espèces de 2016 sur la région avec les statuts d’autochtonies.
base_liste_complete_bfc_aspe correspond au df de la période complète régionale de la base aspe toute stations confondues, export présent directement dans processed_data.
liste_correc_autochtonie correspond à une liste provisoire issus des fusions des df précédent. Il est présent en export dans processed_data
liste_bfc_sp_cor correspond à un df de toutes les espèces présentes en BFC avec les noms taxref, les codes aspe, les statut d’autochtonie par bassins- versants et quelques corrections. Il est présent en export dans processed_data. Il a été construit à partir de la fusion des jeux de données précédents ainsi qu’un ajout de correction manuellement sur de nouvelles colonnes, sur Excel. Il est une correction directe du df précédent liste_correc_autochtonie.
esp_ope_selection correspond au df de la période 2007-2025 avec les stations sélectionnées pour l’analyse des données.
On cherche à intégrer les libelle de nom d’espèces taxref à notre dataframe esp_ope_selection in fine, pour cela :
# Jointure taxref avec ref taxe aspe
tax_ref_aspe <- tax_ref_aspe %>%
left_join(tax_ref_uicn, by = "code_taxref") %>%
select(esp_code_alternatif, ordre, nom_vernaculaire, nom_latin, nom_valide, nom_commun, nom_scientifique, code_taxref)
esp_list <- liste_esp_bfc %>%
full_join(tax_ref_aspe, by = "esp_code_alternatif")
esp_full_list <- esp_list %>%
full_join(esp_effectif, by = "esp_code_alternatif") %>% # jointure effectif à la liste bfc
filter(!(is.na(Introduction) & is.na(effectif_total))) %>%
select(ordre, nom_vernaculaire,nom_latin, nom_commun, nom_scientifique, nom_valide,esp_code_alternatif, Introduction, effectif_total)
#base_liste_complete_bfc_aspe <- readr::read_delim('../processed_data/liste_complete_aspe_bfc.csv') %>%
# select(ordre,nom_vernaculaire, nom_latin, nom_commun, nom_scientifique, nom_valide, Introduction, esp_code_alternatif)
#esp_full_list_eff <- esp_full_list %>%
# select(effectif_total, esp_code_alternatif)
#liste_complete_bfc_lrr <- base_liste_complete_bfc_aspe %>%
# left_join(esp_full_list_eff, by ="esp_code_alternatif")
#liste_correc_autochtonie <- liste_bio_autochtonie %>%
# select(esp_code_alternatif, statut_autochtonie, categorie_lr_france_2019)
#liste_complete_bfc_lrr <- liste_complete_bfc_lrr %>%
# left_join(liste_correc_autochtonie, by = "esp_code_alternatif") %>%
# select(ordre, nom_commun, nom_valide, esp_code_alternatif, statut_autochtonie , effectif_total, categorie_lr_france_2019) %>%
# rename(nom_vernaculaire_v18 = nom_commun,
# nom_scientifique_v18 = nom_valide)
#write_excel_csv(liste_complete_bfc_lrr, "../processed_data/liste_esp_lrr_bfc.csv")
liste_bfc_sp_cor <- readxl::read_xlsx("../processed_data/liste_esp_lrr_bfc_GD.xlsx") %>%
clean_names() %>%
select(esp_code_alternatif, statut_autochtonie, effectif_total, categorie_lr_france_2019, statut_rhin, statut_seine, statut_loire, statut_rhone)
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
left_join(tax_ref_aspe, by = "esp_code_alternatif") %>%
select(
ordre,
nom_valide,
nom_vernaculaire,
esp_code_alternatif,
statut_autochtonie,
effectif_total,
categorie_lr_france_2019,
statut_rhin,
statut_seine,
statut_loire,
statut_rhone,
nom_commun
)
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
filter(!esp_code_alternatif == "TRL") %>% # On ne ^prend pas en compte les ecotypes de truite dans la liste rouge
mutate(statut_loire = fct_recode(statut_loire, "endémique" = "endémqiue"))
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
mutate(autochtonie_new = if_else(if_any(
c(statut_rhone, statut_seine, statut_loire),
~ . %in% c(
"a priori introduit avant 1500",
"endémique",
"introduit avant 1500",
"natif",
"natif*",
"éteint"
)
), "autochtone", "allochtone"))
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
# filter(autochtonie_new == "autochtone") %>%
select(ordre,
nom_valide,
# nom_commun,
esp_code_alternatif,
autochtonie_new,
effectif_total,
#statut_rhin,
# statut_seine,
# statut_loire,
# statut_rhone,
categorie_lr_france_2019
)
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
mutate(effectif_total = na_if(effectif_total, "NA"))
table_liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
arrange(desc(autochtonie_new)) %>%
flextable::flextable() %>%
flextable::autofit() %>%
flextable::colformat_int(j = c(1, 3), big.mark = " ")
table_liste_bfc_sp_cor
ordre | nom_valide | esp_code_alternatif | autochtonie_new | effectif_total | categorie_lr_france_2019 |
|---|---|---|---|---|---|
Acipenseriformes | Acipenser sturio Linnaeus, 1758 | EST | autochtone | CR | |
Anguilliformes | Anguilla anguilla (Linnaeus, 1758) | ANG | autochtone | 686 | CR |
Clupeiformes | Alosa alosa (Linnaeus, 1758) | ALA | autochtone | CR | |
Clupeiformes | Alosa fallax (Lacepède, 1803) | ALF | autochtone | ||
Cypriniformes | Abramis brama (Linnaeus, 1758) | BRE | autochtone | 1561 | LC |
Cypriniformes | Alburnoides bipunctatus (Bloch, 1782) | SPI | autochtone | 64660 | LC |
Cypriniformes | Alburnus alburnus (Linnaeus, 1758) | ABL | autochtone | 66692 | LC |
Cypriniformes | Barbatula barbatula (Linnaeus, 1758) | LOF | autochtone | 41676 | LC |
Cypriniformes | Barbus barbus (Linnaeus, 1758) | BAF | autochtone | 17083 | LC |
Cypriniformes | Blicca bjoerkna (Linnaeus, 1758) | BRB | autochtone | 8856 | LC |
Cypriniformes | Chondrostoma nasus (Linnaeus, 1758) | HOT | autochtone | 5892 | LC |
Cypriniformes | Cobitis taenia Linnaeus, 1758 | LOR | autochtone | 19 | NT |
Cypriniformes | Cyprinus carpio Linnaeus, 1758 | CCO | autochtone | 827 | NA |
Cypriniformes | Gobio gobio (Linnaeus, 1758) | GOU | autochtone | 81007 | LC |
Cypriniformes | Leuciscus burdigalensis Valenciennes in Cuvier & Valenciennes, 1844 | VAR | autochtone | 94 | NT |
Cypriniformes | Leuciscus leuciscus (Linnaeus, 1758) | VAN | autochtone | 4394 | LC |
Cypriniformes | Misgurnus fossilis (Linnaeus, 1758) | LOE | autochtone | EN | |
Cypriniformes | Parachondrostoma toxostoma (Vallot, 1837) | TOX | autochtone | 28 | NT |
Cypriniformes | Phoxinus phoxinus (Linnaeus, 1758) | VAI | autochtone | 162198 | LC |
Cypriniformes | Phoxinus fayollarum Denys, Dettai, Persat, Daszkiewicz, Hautecoeur & Keith, 2020 | VAF | autochtone | ||
Cypriniformes | Phoxinus septimaniae Kottelat, 2007 | VAC | autochtone | ||
Cypriniformes | Rutilus rutilus (Linnaeus, 1758) | GAR | autochtone | 39279 | LC |
Cypriniformes | Scardinius erythrophthalmus (Linnaeus, 1758) | ROT | autochtone | 6991 | LC |
Cypriniformes | Squalius cephalus (Linnaeus, 1758) | CHE | autochtone | 59988 | LC |
Cypriniformes | Telestes souffia (Risso, 1827) | BLN | autochtone | 13215 | LC |
Cypriniformes | Tinca tinca (Linnaeus, 1758) | TAN | autochtone | 1654 | LC |
Esociformes | Esox lucius Linnaeus, 1758 | BRO | autochtone | 955 | VU |
Gadiformes | Lota lota (Linnaeus, 1758) | LOT | autochtone | 350 | VU |
Gasterosteiformes | Gasterosteus aculeatus Linnaeus, 1758 | EPI | autochtone | 1326 | LC |
Gasterosteiformes | Pungitius pungitius (Linnaeus, 1758) | EPT | autochtone | 469 | DD |
Gasterosteiformes | Pungitius laevis (Cuvier, 1829) | EPL | autochtone | ||
Mugiliformes | Chelon ramada (Risso, 1827) | MUP | autochtone | 4 | LC |
Perciformes | Perca fluviatilis Linnaeus, 1758 | PER | autochtone | 7644 | LC |
Perciformes | Zingel asper (Linnaeus, 1758) | APR | autochtone | EN | |
Petromyzontiformes | Lampetra fluviatilis (Linnaeus, 1758) | LPR | autochtone | VU | |
Petromyzontiformes | Lampetra planeri (Bloch, 1784) | LPP | autochtone | 5224 | LC |
Petromyzontiformes | Petromyzon marinus Linnaeus, 1758 | LPM | autochtone | 59 | EN |
Salmoniformes | Salmo salar Linnaeus, 1758 | SAT | autochtone | 119 | NT |
Salmoniformes | Salmo trutta Linnaeus, 1758 | TRF | autochtone | 24435 | LC |
Salmoniformes | Thymallus thymallus (Linnaeus, 1758) | OBR | autochtone | 296 | VU |
Salmoniformes | Thymallus ligericus Persat, Weiss, Froufe, Secci-Petretto & Denys, 2019 | OBA | autochtone | ||
Scorpaeniformes | Cottus gobio Linnaeus, 1758 | CHA | autochtone | 61441 | LC |
Scorpaeniformes | Cottus perifretum Freyhof, Kottelat & Nolte, 2005 | CHF | autochtone | ||
Cypriniformes | Carassius auratus (Linnaeus, 1758) | CAA | allochtone | 13 | NA |
Cypriniformes | Carassius carassius (Linnaeus, 1758) | CAS | allochtone | 129 | LC |
Cypriniformes | Carassius gibelio (Bloch, 1782) | CAG | allochtone | 250 | NA |
Cypriniformes | Ctenopharyngodon idella (Valenciennes, 1844) | CTI | allochtone | 2 | NA |
Cypriniformes | Gobio occitaniae Kottelat & Persat, 2005 | GOO | allochtone | 526 | LC |
Cypriniformes | Hypophthalmichthys molitrix (Valenciennes, 1844) | CAR | allochtone | 1 | NA |
Cypriniformes | Leucaspius delineatus (Heckel, 1843) | ABH | allochtone | 15 | DD |
Cypriniformes | Leuciscus aspius (Linnaeus, 1758) | ASP | allochtone | 157 | NA |
Cypriniformes | Leuciscus idus (Linnaeus, 1758) | IDE | allochtone | 1 | DD |
Cypriniformes | Phoxinus csikii Hankó, 1922 | VAD | allochtone | ||
Cypriniformes | Pseudorasbora parva (Temminck & Schlegel, 1846) | PSR | allochtone | 9155 | NA |
Cypriniformes | Rhodeus amarus (Bloch, 1782) | BOU | allochtone | 32970 | LC |
Cypriniformes | Scardinius hesperidicus Bonaparte, 1845 | ROI | allochtone | 3 | NA |
Gobiiformes | Neogobius melanostomus (Pallas, 1814) | GTN | allochtone | 502 | NA |
Gobiiformes | Proterorhinus semilunaris (Heckel, 1837) | GDL | allochtone | 171 | NA |
Perciformes | Ambloplites rupestris (Rafinesque, 1817) | CDR | allochtone | 1431 | NA |
Perciformes | Gymnocephalus cernua (Linnaeus, 1758) | GRE | allochtone | 1234 | LC |
Perciformes | Lepomis gibbosus (Linnaeus, 1758) | PES | allochtone | 12550 | NA |
Perciformes | Micropterus salmoides (Lacepède, 1802) | BBG | allochtone | 64 | NA |
Perciformes | Salariopsis fluviatilis (Asso, 1801) | BLE | allochtone | 107 | LC |
Perciformes | Sander lucioperca (Linnaeus, 1758) | SAN | allochtone | 447 | NA |
Salmoniformes | Coregonus Linnaeus, 1758 | COR | allochtone | NA | |
Salmoniformes | Oncorhynchus mykiss (Walbaum, 1792) | TAC | allochtone | 73 | NA |
Salmoniformes | Salvelinus fontinalis (Mitchill, 1814) | SDF | allochtone | 3 | NA |
Siluriformes | Ameiurus melas (Rafinesque, 1820) | PCH | allochtone | 576 | NA |
Siluriformes | Silurus glanis Linnaeus, 1758 | SIL | allochtone | 2951 | NA |
Après avoir construit la liste d’espèces avec les noms d’espèces complets taxrefv18, on peut ajouter notre sélection dans notre jeu de données initiale esp_ope_selection.
liste_bfc_sp_cor_join <- liste_bfc_sp_cor %>%
select(esp_code_alternatif, autochtonie_new)
esp_ope_selection <- esp_ope_selection %>%
left_join(liste_bfc_sp_cor_join, by = "esp_code_alternatif")
liste_bio <- readxl::read_xlsx("../processed_data/liste_complete_lrr_correction.xlsx") %>%
clean_names() %>%
select(
esp_code_alternatif,
maturite_m,
maturite_f,
maturite_an,
maturite_bq,
longevite_bq,
longevite_an
)
liste_bio_join <- liste_bio %>%
left_join(liste_bfc_sp_cor, by = "esp_code_alternatif") %>%
select(
# ordre,
nom_valide,
esp_code_alternatif,
autochtonie_new,
maturite_m,
maturite_f,
maturite_an,
maturite_bq,
longevite_bq,
longevite_an,
effectif_total,
categorie_lr_france_2019
)
liste_bio <- liste_bio_join %>%
filter(
autochtonie_new == "autochtone",
!is.na(effectif_total)
)
Dans les stations du “Ternin à Chissey-En-Morvan” : 8837 et du “Mechet à Saint-Prix” 8842 : le GOU à été changé vers 2018 en GOO. Avant cette date, les goujons occitan étaient identifiée comme GOU.
#write_excel_csv(liste_bfc_sp_cor, "../processed_data/liste_bfc_sp_cor.csv")
Le tableau tab_occurrence regroupant toutes les combinaisons d’opérations et d’espèces possible est réalisé. Il sera ensuite utilisé pour calculer les pourcentages d’occurrence des espèces présentes dans le jeu de données initiale esp_ope_selection.
ope_id <- unique(esp_ope_selection$ope_id)
esp_code_alternatif <- unique(esp_ope_selection$esp_code_alternatif)
ope_annees <- esp_ope_selection %>% # Création d'un df contenant toutes les opérations et années associées
ungroup() %>%
select(ope_id,
annee) %>%
distinct()
tab_occurrence <- crossing(ope_id, esp_code_alternatif)
À partir de tab_occurrence, le calcul du pourcentage d’occurrence peut être réalisé. Il s’agit du nombre de pêches avec une présence de l’espèce divisé par le nombre total de pêches. Les calculs des pourcentages d’occurrence sont stockés dans le jeu de données tab_taux_occurrence regroupant les densités surfaciques moyennes par espèce ainsi que les taux d’occurrence.
tab_taux_occurrence <- tab_occurrence %>%
left_join(ope_esp_densite_cal) %>%
mutate(valeur_oc = ifelse(is.na(valeur), 0, valeur)) %>%
left_join(ope_annees) %>%
group_by(esp_code_alternatif,
annee) %>%
mutate(n_ope = n_distinct(ope_id),
n_oc = n_distinct(ope_id[valeur_oc > 0]),
taux_occurrence = (n_oc / n_ope)*100) %>%
group_by(esp_code_alternatif) %>%
mutate(taux_occurrence_moy = mean(taux_occurrence)) %>%
select(esp_code_alternatif,
taux_occurrence_moy) %>%
distinct()
Un tableau final regroupant les densités surfaciques moyennes et les occurrences moyennes des espèces est réalisé (relatifs à la sélection des stations et opérations réalisée dans le script 01_preatreatment_ope).
tab_densite_occurrence <- left_join(esp_densite_moyenne, tab_taux_occurrence, by = "esp_code_alternatif")
En amont de la réalisation d’une représentation graphique, les statuts de présence des espèces dans la précédente liste rouge régionale est renseigné dans une nouvelle colonne statut_lrr du dataframe tab_densite_occurrence. Cela permettra d’observer où se situent chaque espèce dans la relation pourcentage occurrence moyenne / densité surfacique moyenne, ainsi que leur présence / absence dans la précédente liste rouge régionale.
tab_densite_occurrence <- tab_densite_occurrence %>%
mutate(statut_lrr = ifelse (esp_code_alternatif %in% params$especes_lrr_FC,
"Liste Rouge Régionale FC 2014",
"Présente en Bourgogne-Franche-Comté"))
La représentation graphique est effectuée : par soucis de représentation, les axes sont mis en échelles logarithmiques.
gg_base <- ggplot(tab_densite_occurrence,
aes(x = densite_moy,
y = taux_occurrence_moy,
label = esp_code_alternatif,
color = statut_lrr)) +
geom_point(size = 3,
shape = 16) +
labs(title = "Densités surfaciques moyennes vs Pourcentage d'occurrence par espèce sur les 20 dernières années",
subtitle = "Région Bourgogne-Franche-Comté",
x = "Densité surfacique moyenne",
y = "Pourcentage d'occurrence") +
scale_color_manual(values = wesanderson::wes_palette("AsteroidCity1")[3:5],
name = "Espèces") +
scale_x_log10() + # axe des x en échelle logarithmique
scale_y_log10() + # axe des y en échelle logarithmique
theme_light(base_size = 11) +
theme(plot.title = element_text(hjust = 0.5),
panel.grid.major = element_line(color = "#ffffff", size = 0.1),
panel.grid.minor = element_line(color = "#ffffff"),
panel.background = element_rect(fill = "#faf0e6"),
legend.position = "bottom")
gg_texte_usuel <- gg_base + geom_label_repel() # afin d'éviter les chevauchements entre les différentes étiquettes
gg_texte_usuel
À partir de ce graphique, nous pouvons éliminer les espèces qui sont trop rares, c’est-à-dire ayant une densité surfacique moyenne et un taux d’occurrence très faibles (pour lesquelles nous n’avons pas assez de données - cela correspond aux espèces situées en bas à gauche du graphique). Les espèces ayant le plus de données sur lesquelles s’appuyer apparaissent en haut à droite du graphique : ce sont les espèces qui ont une forte occurrence ainsi qu’une forte densité surfacique moyenne.
Dans le cadre de notre étude, on observe que les espèces étudiées dans la précédente liste rouge régionale (2014) apparaissent pour la quasi-totalité dans la partie supérieure droite du graphique, à l’exception de quelques espèces comme :
Nous réajustons ainsi la sélection des espèces de la précendente liste rouge régionale en éliminant les espèces contenants trop peu de données. La sélection finale des espèces est contenue dans l’objet mes_especes. Nous appliquons cette sélection à notre dataframe esp_ope_selection.
especes_lrr_2014 <- c("LOT","LOE","CHE","BRO","BOU","ANG","PER","BAF","EPT","ABH","BRE","EPI","CCO","CHA","HOT","VAI","TAN","BLN","VAN","TRF","LPP","OBR","ROT","ABL","GAR","IDE","LOF","TOX","GRE","BRB","SPI","GOU","LPM","LOR","LPP")
mes_especes <- c("ABH", "ABL", "ANG", "BAF", "BLN", "BLE", "BOU", "BRB", "BRE", "BRO", "CHA", "CHE", "EPI", "EPT", "GAR", "GOU", "GOO", "LPP", "LPM", "LOR", "LOF", "LOT", "MUP", "OBR", "PER", "ROT", "SAT", "SPI", "TAN", "TOX", "TRF", "VAI", "VAN")
esp_ope_selection <- esp_ope_selection %>%
filter(esp_code_alternatif %in% mes_especes)
Sauvegarde pour le script suivant : script 04_pre_traitements_donnees_ope_especes.
save(especes_lrr_2014,
mes_especes,
esp_ope_selection,
file = "../processed_data/selection_especes.rda")
Irz, P., Mondy, C., Richard, B. Bonnafoux, L. (2024). aspe: An R package to analyse and visualise river fish data in France. R package version 0.4.1, https://github.com/PascalIrz/aspe/