From 40635a50739c3667099b120fd6bc81d016792613 Mon Sep 17 00:00:00 2001 From: VANOVERBEKE Date: Tue, 27 May 2025 10:23:59 +0200 Subject: [PATCH 01/11] opstart vissen 2025 --- .../10_moneos_visdata_VIS_fuiken.Rmd | 268 +++ .../11_moneos_visdata_VIS_ankerkuil.Rmd | 310 +++ .../20_moneos_visdata_fuiken_integratie.Rmd | 640 +++++ ...21_moneos_visdata_ankerkuil_integratie.Rmd | 670 ++++++ .../30_visdata_fuiken_controle_EMSE.Rmd | 190 ++ .../31_visdata_ankerkuil_controle_EMSE.Rmd | 135 ++ .../35_moneos_soorten_kleurcode.Rmd | 956 ++++++++ .../40_moneos_analyse_fuiken_EMSE.Rmd | 2128 +++++++++++++++++ .../41_moneos_analyse_ankerkuil_EMSE.Rmd | 1943 +++++++++++++++ .../090_vissen_inleiding_en_methode.Rmd | 321 +++ .../091_vissen_ankerkuil.Rmd | 620 +++++ .../092_vissen_fuiken.Rmd | 689 ++++++ .../093_vissen_conclusies.Rmd | 308 +++ 13 files changed, 9178 insertions(+) create mode 100644 moneos_2025/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd create mode 100644 moneos_2025/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd create mode 100644 moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd create mode 100644 moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd create mode 100644 moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd create mode 100644 moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd create mode 100644 moneos_2025/090_vissen/35_moneos_soorten_kleurcode.Rmd create mode 100644 moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd create mode 100644 moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd create mode 100644 moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd create mode 100644 moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd create mode 100644 moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd create mode 100644 moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd diff --git a/moneos_2025/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd b/moneos_2025/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd new file mode 100644 index 0000000..58bb2ec --- /dev/null +++ b/moneos_2025/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd @@ -0,0 +1,268 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, + "/output") + )}) + +title: "visdata fuiken" +output: + bookdown::word_document2: default +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +run_pad <- function() { + + source(find_root_file("../pad.R", criterion = is_rstudio_project)) + + pad_data <- maak_pad(params$hoofdstuk, "data") + pad_figuren <- maak_pad(params$hoofdstuk, "figuren") + pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + +} + +run_pad() + +``` + + +```{r variabelen} + +run_variabelen <- + function() { + + jaren <- as.numeric(jaar_moneos) - 1 + vangstmethode <- c('Schietfuik') + + # Zeeschelde vissen + locaties_name <- "fuikvangsten_Zeeschelde_locaties" + metadata_name <- "fuikvangsten_Zeeschelde_metadata" + filename <- "fuikdata_Zeeschelde" + + # zijrivieren vissen + # locaties_name <- "fuikvangsten_zijrivieren_locaties" + # metadata_name <- "fuikvangsten_zijrivieren_metadata" + # filename <- "fuikdata_zijrivieren" + + locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) + locatie_nrs <- locaties$locatiecode %>% as.character() + locatie_namen <- locaties$locatie + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + + } + +run_variabelen() + +``` + + +```{r connectie met databank} + +VIS2 <- connect_inbo_dbase("D0147_00_Vis2") +VIS <- connect_inbo_dbase("W0001_00_Vis") + +``` + + +```{r bevragen databank} + +FactMeting_Pivot <- + tbl(VIS, "FactMeting_Pivot") +DimWaarneming <- + tbl(VIS, "DimWaarneming") +DimGebied <- + tbl(VIS, "DimGebied") +DimGebiedInfo <- + tbl(VIS, "DimGebiedInfo") +DimTaxon <- + tbl(VIS, "DimTaxon") +DimVisindexTaxon <- + tbl(VIS, "DimVisindexTaxon") +DimMethode <- + tbl(VIS, "DimMethode") +DimDate <- + tbl(VIS, "DimDate") + + +# Vispunten <- +# tbl(VIS2, "Vispunten") +# VHAVispunten <- +# tbl(VIS2, "VHAVispunten") +AbiotischeMeting <- + tbl(VIS2, "AbiotischeMeting") + + +tbl_campagnes <- + DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")) %>% + inner_join(DimMethode, by = "MethodeKey") %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs + # , + # Methodenaam %in% vangstmethode + ) %>% + select(WaarnemingKey, WaarnemingID, GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, Begindatum, Month, Year, MethodeKey, Methodenaam, Methodegroepcode, AantalDagen, AantalFuiken) + +tbl_data <- + FactMeting_Pivot %>% + right_join(DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")), + by = "WaarnemingKey") %>% + inner_join(DimTaxon %>% + left_join(DimVisindexTaxon %>% select(TaxonKey, Exoot)), + by = "TaxonKey") %>% + inner_join(DimMethode, by = "MethodeKey") %>% + select(MetingPivotKey, WaarnemingKey, WaarnemingID, + GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, + Begindatum, Month, Year, + MethodeKey, Methodenaam, Methodegroepcode, AantalDagen, AantalFuiken, + TaxonKey, Soort, WetenschappelijkeNaam, Exoot, + TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN, + TEMPERATUUR, ZUURSTOF, TURBIDITEIT, CONDUCTIVITEIT, PH) %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs + # , + # Methodenaam %in% vangstmethode + ) + +(gebied_codes <- + tbl_data %>% + distinct(Gebiedcode) %>% + collect() %>% + pull()) + +waarneming_IDs <- + tbl_data %>% + distinct(WaarnemingID) %>% + collect() %>% + pull() + +# tbl_locatie_gegevens <- +# Vispunten %>% +# inner_join(VHAVispunten, by = c("VIP_ID" = "VHP_VIP_ID")) %>% +# select(VIP_CDE, VIP_Omschrijving, VHP_LOTIC_NAAM, VHP_LOTIC_BekNaam, VHP_LOTIC_STROOMGEBIED, VHP_GEMEENTE) %>% +# filter(VIP_CDE %in% gebied_codes) + +tbl_abiotiek <- + AbiotischeMeting %>% + select(ABME_WRNG_ID, ABME_ZUURSTOF, ABME_ZUURSTOFPROCENT, ABME_TEMPERATUUR, ABME_PH, ABME_CONDUCTIVITEIT, ABME_TURBIDITEIT, ABME_SALINITEIT_PRM) %>% + filter(ABME_WRNG_ID %in% waarneming_IDs) + +data <- + tbl_data %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +campagnes <- + tbl_campagnes %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +soorten <- + data %>% + distinct(Soort, WetenschappelijkeNaam, Exoot) + +data <- + data %>% + select(-WetenschappelijkeNaam) + +``` + + +```{r sluiten databank} + +dbDisconnect(VIS) +dbDisconnect(VIS2) + +``` + + +```{r hervariabel, ref.label=c('pad', 'variabelen')} + +rm(list = ls()[-which(ls() %in% c("data", "campagnes", "soorten", "params", "run_pad", "run_variabelen"))]) + +run_pad() +run_variabelen() + +``` + + +```{r opslaan ruwe data fuiken} + +write_xlsx(list(campagnes = campagnes, + soorten = soorten, + data = data), + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +``` + + +```{r check campagnes, eval=FALSE} + +campagnes <- + read_xlsx(sheet = "campagnes", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +data <- + read_xlsx(sheet = "data", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +campagnes_dstnct <- + campagnes %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +campagnes_dstnct2 <- + data %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +(sd <- setdiff(campagnes_dstnct, campagnes_dstnct2)) + +campagnes_dstnct %>% + distinct(Gebiedcode, Gebiednaam) + +``` + diff --git a/moneos_2025/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd b/moneos_2025/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd new file mode 100644 index 0000000..80224d8 --- /dev/null +++ b/moneos_2025/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd @@ -0,0 +1,310 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, + "/output") + )}) + +title: "visdata fuiken" +output: + bookdown::word_document2: default +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(tidyjson) +library(lubridate) +library(readxl) +library(writexl) +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r, pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +run_pad <- function() { + + source(find_root_file("../pad.R", criterion = is_rstudio_project)) + + pad_data <- maak_pad(params$hoofdstuk, "data") + pad_figuren <- maak_pad(params$hoofdstuk, "figuren") + pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + +} + +run_pad() + +``` + + +```{r, variabelen} + +run_variabelen <- + function() { + + jaren <- as.numeric(jaar_moneos) - 1 + # jaren <- 2015:2023 + vangstmethode <- c('Ankerkuil', 'Ankerkuil-vloed', 'Ankerkuil-eb') + + # Zeeschelde vissen + locaties_name <- "ankerkuil_Zeeschelde_locaties" + metadata_name <- "ankerkuil_Zeeschelde_metadata" + filename <- "ankerkuil_Zeeschelde" + + # zijrivieren vissen + # locaties_name <- "fuikvangsten_zijrivieren_locaties" + # metadata_name <- "fuikvangsten_zijrivieren_metadata" + # filename <- "fuikdata_zijrivieren" + + locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) + locatie_nrs <- locaties$locatiecode %>% as.character() + locatie_namen <- locaties$locatie + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + + } + +run_variabelen() + +``` + + +```{r connectie met databank} + +VIS2 <- connect_inbo_dbase("D0147_00_Vis2") +VIS <- connect_inbo_dbase("W0001_00_Vis") + +``` + + +```{r bevragen databank} + +FactMeting_Pivot <- + tbl(VIS, "FactMeting_Pivot") +DimWaarneming <- + tbl(VIS, "DimWaarneming") +DimGebied <- + tbl(VIS, "DimGebied") +DimGebiedInfo <- + tbl(VIS, "DimGebiedInfo") +DimTaxon <- + tbl(VIS, "DimTaxon") +DimVisindexTaxon <- + tbl(VIS, "DimVisindexTaxon") +DimMethode <- + tbl(VIS, "DimMethode") +DimDate <- + tbl(VIS, "DimDate") + + +# Vispunten <- +# tbl(VIS2, "Vispunten") +# VHAVispunten <- +# tbl(VIS2, "VHAVispunten") +AbiotischeMeting <- + tbl(VIS2, "AbiotischeMeting") +Waarneming <- + tbl(VIS2, "Waarneming") +Methode <- + tbl(VIS2, "Methode") +Meting <- + tbl(VIS2, "Meting") + +# informatie ivm met berekening en eenheid voor catch per unit effort zijn te vinden in VIS2 tabel 'Methode' (en 'MethodeCpueParameter') + + +tbl_campagnes <- + DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")) %>% + inner_join(DimMethode, by = "MethodeKey") %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs, + Methodenaam %in% vangstmethode) %>% + select(WaarnemingKey, WaarnemingID, GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, Begindatum, Month, Year, MethodeKey, Methodenaam, Methodegroepcode) + + +tbl_data <- + FactMeting_Pivot %>% + right_join(DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")), + by = "WaarnemingKey") %>% + inner_join(DimTaxon %>% + left_join(DimVisindexTaxon %>% select(TaxonKey, Exoot)), + by = "TaxonKey") %>% + inner_join(DimMethode, by = "MethodeKey") %>% + select(MetingPivotKey, WaarnemingKey, MetingID, WaarnemingID, + GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, + Begindatum, Month, Year, + MethodeKey, Methodenaam, Methodegroepcode, + TaxonKey, Soort, WetenschappelijkeNaam, Exoot, + TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN, + TEMPERATUUR, ZUURSTOF, TURBIDITEIT, CONDUCTIVITEIT, PH) %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs, + Methodenaam %in% vangstmethode) + +(gebied_codes <- + tbl_data %>% + distinct(Gebiedcode) %>% + collect() %>% + pull()) + +waarneming_IDs <- + tbl_data %>% + distinct(WaarnemingID) %>% + collect() %>% + pull() + +meting_IDs <- + tbl_data %>% + distinct(MetingID) %>% + collect() %>% + pull() + +tbl_abiotiek <- + AbiotischeMeting %>% + select(ABME_WRNG_ID, ABME_ZUURSTOF, ABME_ZUURSTOFPROCENT, ABME_TEMPERATUUR, ABME_PH, ABME_CONDUCTIVITEIT, ABME_TURBIDITEIT, ABME_SALINITEIT_PRM) %>% + filter(ABME_WRNG_ID %in% waarneming_IDs) + +tbl_volume <- + Waarneming %>% + select(WRNG_ID, WRNG_WGST_CDE, WRNG_METH_CDE, WRNG_OCR, WRNG_CPUE_PARAMETERS) %>% + filter(WRNG_ID %in% waarneming_IDs) + +tbl_verdunning <- + Meting %>% + select(METI_ID, METI_WRNG_ID, METI_DILUTION_FACTOR) %>% + filter(METI_ID %in% meting_IDs) + +volume <- + tbl_volume %>% + collect() %>% + bind_cols(., .$WRNG_CPUE_PARAMETERS %>% + spread_all() %>% + select(AantalUrenStuurboord, AantalUrenBakboord, AfgevistVolumeStuurboord, AfgevistVolumeBakboord) %>% + as_tibble()) %>% + replace_na(list(AantalUrenStuurboord = 0, AantalUrenBakboord = 0, + AfgevistVolumeStuurboord = 0, AfgevistVolumeBakboord = 0)) %>% + mutate(uren = AantalUrenStuurboord + AantalUrenBakboord, + volume = AfgevistVolumeStuurboord + AfgevistVolumeBakboord) + + +data <- + tbl_data %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(volume %>% select(WRNG_ID, uren, volume), by = c("WaarnemingID" = "WRNG_ID")) %>% + left_join(tbl_verdunning %>% collect(), by = c("MetingID" = "METI_ID", "WaarnemingID" = "METI_WRNG_ID")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +campagnes <- + tbl_campagnes %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(volume %>% select(WRNG_ID, uren, volume), by = c("WaarnemingID" = "WRNG_ID")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +soorten <- + data %>% + distinct(Soort, WetenschappelijkeNaam, Exoot) + +data <- + data %>% + select(-WetenschappelijkeNaam) + +``` + + +```{r sluiten databank} + +dbDisconnect(VIS) +dbDisconnect(VIS2) + +``` + + +```{r hervariabel, ref.label=c('pad', 'variabelen')} + +rm(list = ls()[-which(ls() %in% c("data", "campagnes", "soorten", "params", "run_pad", "run_variabelen"))]) + +run_pad() +run_variabelen() + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r opslaan ruwe data ankerkuil} + +write_xlsx(list(campagnes = campagnes, + soorten = soorten, + data = data), + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +``` + + +```{r check campagnes, eval=FALSE} + +campagnes <- + read_xlsx(sheet = "campagnes", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +data <- + read_xlsx(sheet = "data", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +campagnes_dstnct <- + campagnes %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +campagnes_dstnct2 <- + data %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +(df <- setdiff(campagnes_dstnct, campagnes_dstnct2)) + +campagnes_dstnct %>% + distinct(Gebiedcode, Gebiednaam) + +``` + diff --git a/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd b/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd new file mode 100644 index 0000000..4fb72ec --- /dev/null +++ b/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd @@ -0,0 +1,640 @@ +--- +params: + hoofdstuk: "090_vissen" +title: "visdata fuiken" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r variabelen} + +laatste_jaar <- as.numeric(jaar_moneos) - 1 +pad_data_historisch <- str_c(pad_prj_schelde, pad_moneos, as.numeric(jaar_moneos)-1, "/", params$hoofdstuk, "/data/") + +locaties_name <- "fuikvangsten_Zeeschelde_locaties" +metadata_name <- "fuikvangsten_Zeeschelde_metadata" +filename <- "fuikdata_Zeeschelde_VLIZ" + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) %>% + mutate(locatiecode = as.character(locatiecode)) + +``` + + +```{r inlezen historische data} + +campagnes_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "campagnes") + +# omzetten maand naar seizoen +# campagnes_historisch <- +# campagnes_historisch %>% +# mutate(seizoen = +# case_when( +# maand %in% 3:5 ~ "voorjaar", +# maand %in% 6:8 ~ "zomer", +# maand %in% 9:11 ~ "najaar", +# maand %in% 12:2 ~ "winter")) %>% +# select(ID_afvissing:jaar, seizoen, everything(), -maand) + +aantal_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "aantallen") + +gewicht_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "gewicht") + +``` + + +```{r inlezen recent data} + +# campagnes_recent <- +# read_xlsx(str_c(pad_data, "fuikdata_Zeeschelde_ruw_VIS_", +# laatste_jaar, +# ".xlsx"), +# sheet = "campagnes") + +data_recent <- + read_xlsx(str_c(pad_data, "fuikdata_Zeeschelde_ruw_VIS_", + laatste_jaar, + ".xlsx"), + sheet = "data") + +(old_names <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam) %>% + arrange(Gebiedcode) %>% + pull(Gebiednaam)) + +gebieden <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam, round(LambertX), round(LambertY)) %>% + arrange(Gebiedcode) + +locaties <- + locaties %>% + filter(locatiecode %in% gebieden$Gebiedcode) + +locatie_nrs <- locaties$locatiecode +locatie_namen <- locaties$locatie + +(gebieden <- + gebieden %>% + mutate(new_names = locatie_namen[order(locatie_nrs)])) + +level_key <- locatie_namen[order(locatie_nrs)] +names(level_key) <- old_names + +``` + + +```{r correcties soortnamen historische data, eval=FALSE} + +rename_vector <- + c("kleine koornaarvis" = "koornaarvis") + +aantal_historisch <- + aantal_historisch %>% + rename(!!!rename_vector) +gewicht_historisch <- + gewicht_historisch %>% + rename(!!!rename_vector) + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data_recent %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r controle uniek aantal of gewicht in ruwe data} + +aantal_NA_of_0_ruw <- + data_recent %>% + filter(is.na(TAXONAANTAL) | + near(TAXONAANTAL, 0)) %>% + select("MetingPivotKey", "WaarnemingKey", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "AantalDagen", "AantalFuiken", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN") + +gewicht_NA_of_0_ruw <- + data_recent %>% + filter(if_all(c(TAXONGEW, TAXONTOTGEW), ~is.na(.)) | + if_all(c(TAXONGEW, TAXONTOTGEW), ~near(., 0))) %>% + select("MetingPivotKey", "WaarnemingKey", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "AantalDagen", "AantalFuiken", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN") + + +soort_NA <- + gewicht_NA_of_0_ruw %>% + filter(TAXONAANTAL == 1) %>% + pull(Soort) %>% + unique() + +if (length(soort_NA) > 0) { + data_lengte <- + data_recent %>% + filter(Soort %in% soort_NA, + !is.na(TAXONLEN)) %>% + select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) + + p <- + data_lengte %>% + ggplot(aes(TAXONLEN, TAXONGEW)) + + geom_point() + + geom_smooth(method = "lm") + + scale_x_log10() + + scale_y_log10() + + facet_wrap(~Soort) + print(p) + + regressie_lengte <- + data_lengte %>% + group_by(Soort) %>% + summarise(int = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[1], + slope = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[2]) %>% + ungroup() + + datum_soort <- + data_recent %>% + mutate(gewicht = if_else(is.na(TAXONGEW), + TAXONTOTGEW, TAXONGEW)) %>% + select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% + filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% + drop_na() %>% + group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% + summarise(across(everything(), sum)) %>% + ungroup() + + + gewicht_NA <- + gewicht_NA_of_0_ruw %>% + select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, + TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN) %>% + left_join(datum_soort) %>% + left_join(regressie_lengte) %>% + replace_na(list(aantal = 0, gewicht = 0)) %>% + mutate(prop_aantal = TAXONAANTAL/aantal, + gewicht_imputed = + case_when( + TAXONAANTAL > 1 ~ gewicht*prop_aantal, + TRUE ~ exp(int + slope*log(TAXONLEN)) + )) + + + write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + # NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_fuiken.xlsx")) +} + +``` + + +```{r toevoegen imputation aan ruwe data} + +if (length(soort_NA) > 0) { + keys <- gewicht_NA$MetingPivotKey + + dat_before <- + data_recent %>% + filter(MetingPivotKey %in% keys) + + for(k in keys) { + data_recent$TAXONGEW[data_recent$MetingPivotKey == k] <- + gewicht_NA$gewicht_imputed[gewicht_NA$MetingPivotKey == k] + } + + dat_after <- + data_recent %>% + filter(MetingPivotKey %in% keys) +} + +``` + + +```{r data per datum} + +data_per_datum <- + data_recent %>% + select(locatiecode = Gebiedcode, locatie = Gebiednaam, datum = Begindatum, + aantal_dagen = AantalDagen, aantal_fuiken = AantalFuiken, soort = Soort, + aantal = TAXONAANTAL, gewicht_ind = TAXONGEW, gewicht_tot = TAXONTOTGEW, + temperatuur = ABME_TEMPERATUUR, zuurstof = ABME_ZUURSTOF, zuurstof_perc = ABME_ZUURSTOFPROCENT, + ph = ABME_PH, turbiditeit = ABME_TURBIDITEIT, conductiviteit = ABME_CONDUCTIVITEIT) %>% + mutate(locatie = recode(locatie, !!!level_key), + fuikdagen = aantal_dagen * aantal_fuiken, + datum = date(datum), + jaar = year(datum), + maand = month(datum), + seizoen = + case_when( + maand %in% 3:5 ~ "voorjaar", + maand %in% 6:8 ~ "zomer", + maand %in% 9:11 ~ "najaar", + maand %in% 12:2 ~ "winter"), + soort = str_to_lower(soort)) %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken, fuikdagen, soort) %>% + summarise(n = n(), + aantal = sum(aantal, na.rm = FALSE), + # gewicht = sum(if_else(is.na(gewicht_ind), + # if_else(is.na(gewicht_tot), NA_real_, gewicht_tot), + # if_else(is.na(gewicht_tot), gewicht_ind, gewicht_ind + gewicht_tot)), + gewicht = sum(if_else(is.na(gewicht_ind), + gewicht_tot, gewicht_ind), + na.rm = FALSE), + across(c(temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit), + ~mean(., na.rm = TRUE)), + .groups = "drop") + +``` + + +```{r controle NA in aantal of gewicht in geaggregeerde data} + +dat_NA <- + data_per_datum %>% + filter(is.na(aantal) | is.na(gewicht)) + +``` + + +```{r controle ontbrekende campagnes} + +campagnes <- + data_per_datum %>% + select(locatie, jaar, maand, seizoen) %>% + distinct() + +camp_tot <- + campagnes %>% + expand(locatie, jaar, seizoen) + +campagnes_ontbrekend <- + camp_tot %>% + anti_join(campagnes) + +campagnes_NA_or_0 <- + data_per_datum %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken) %>% + summarise(n = sum(n), aantal = sum(aantal, na.rm = TRUE), gewicht = sum(gewicht, na.rm = TRUE)) %>% + ungroup() %>% + arrange(datum, locatie, seizoen) %>% + filter(if_any(.cols = everything(), .fns = ~is.na(.)) | + if_any(.cols = c(aantal_dagen, aantal_fuiken), ~near(., 0))) + +``` + + +```{r controle uniek aantal of gewicht in geaggregeerde data} + +uniek_aantal_of_gewicht <- + data_per_datum %>% + select(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken, fuikdagen, soort, n, aantal, gewicht) %>% + arrange(datum, locatie, seizoen) %>% + filter(if_any(c(aantal, gewicht), ~is.na(.)) | + (if_any(c(aantal, gewicht), ~near(., 0)) & !if_all(c(aantal, gewicht), ~near(., 0)))) + + +uniek_aantal_of_gewicht_vis <- + uniek_aantal_of_gewicht %>% + filter(!str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +uniek_aantal_of_gewicht_inv <- + uniek_aantal_of_gewicht %>% + filter(str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +``` + + +```{r vergelijking aanwezige soorten met historisch} + +(soorten_historisch_aanwezig <- + union( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names()) %>% + sort()) + +(soorten_historisch_afwezig <- + intersect( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names()) %>% + sort()) + +intersect(soorten_historisch_aanwezig, soorten_historisch_afwezig) +setdiff(aantal_historisch %>% + select(-ID_afvissing) %>% + names(), + union(soorten_historisch_aanwezig, soorten_historisch_afwezig)) + + +(soorten_recent_aanwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal > 0) %>% + pull(soort) %>% + sort()) + +(soorten_recent_afwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal == 0) %>% + pull(soort) %>% + sort()) + +intersect(soorten_recent_aanwezig, soorten_recent_afwezig) +setdiff(data_per_datum %>% + distinct(soort) %>% + pull(), + union(soorten_recent_aanwezig, soorten_recent_afwezig)) + + +(soorten_totaal_afwezig <- + setdiff(soorten_historisch_afwezig, soorten_recent_aanwezig) %>% + sort()) + +(soorten_totaal_aanwezig <- + union(soorten_historisch_aanwezig, soorten_recent_aanwezig) %>% + sort()) + +(soorten_totaal_aanwezig_invertebraten <- + soorten_totaal_aanwezig %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + sort()) + +(soorten_totaal_aanwezig_vis <- + setdiff(soorten_totaal_aanwezig, soorten_totaal_aanwezig_invertebraten) %>% + sort()) + +(soorten_totaal_aanwezig <- + c(soorten_totaal_aanwezig_vis, soorten_totaal_aanwezig_invertebraten)) + + +(soorten_totaal <- + union(soorten_totaal_aanwezig, soorten_totaal_afwezig) %>% + sort()) + +(unieke_soorten_historisch_aanwezig <- + setdiff(soorten_historisch_aanwezig, + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_historisch_totaal <- + setdiff(union(soorten_historisch_aanwezig, soorten_historisch_afwezig), + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_recent_aanwezig <- + setdiff(soorten_recent_aanwezig, + soorten_historisch_aanwezig) %>% + sort()) + +``` + + +```{r correcties soortnamen recente data, eval=FALSE} + +data_per_datum <- + data_per_datum %>% + mutate(soort = + case_match(soort, + "blauwband" ~ "blauwbandgrondel", + .default = soort)) + +``` + + +```{r sheets finale data recent} + +campagnes_recent <- + data_per_datum %>% + select(locatie, datum, jaar, seizoen, fuikdagen, + temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit) %>% + distinct() %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything()) %>% + arrange(ID_afvissing) + +aantallen_recent <- + data_per_datum %>% + select(locatie, datum, soort, aantal) %>% + pivot_wider(names_from = soort, + values_from = aantal, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum) %>% + arrange(ID_afvissing) + +gewicht_recent <- + data_per_datum %>% + select(locatie, datum, soort, gewicht) %>% + pivot_wider(names_from = soort, + values_from = gewicht, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum) %>% + arrange(ID_afvissing) + +``` + + +```{r samenvoegen recent met historisch} + +aantal_historisch_finaal <- + aantal_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(aantal_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + +gewicht_historisch_finaal <- + gewicht_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + + +start_ID <- max(campagnes_historisch$ID_afvissing) + +campagnes_recent_finaal <- + campagnes_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) + +aantal_recent_finaal <- + aantallen_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(aantallen_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + +gewicht_recent_finaal <- + gewicht_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + + +soorten_order <- + soorten_totaal_aanwezig + +campagnes <- + campagnes_historisch %>% + bind_rows(campagnes_recent_finaal) + +aantallen <- + aantal_historisch_finaal %>% + bind_rows(aantal_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +gewicht <- + gewicht_historisch_finaal %>% + bind_rows(gewicht_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + + +# NAs vervangen voor soorten die overal nul zijn, maar niet wanneer aantallen of gewicht wel aanwezig zijn + +# afwezige_soorten <- +# intersect( +# aantallen %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names(), +# gewicht %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names()) +# +# soorten_replace <- +# as.list(rep(0, length(afwezige_soorten))) +# names(soorten_replace) <- afwezige_soorten +# +# aantallen <- +# aantallen %>% +# replace_na(soorten_replace) +# gewicht <- +# gewicht %>% +# replace_na(soorten_replace) + +``` + + +```{r wegschrijven-data} + +# filename <- "fuikdata_Zeeschelde_VLIZ" + +jaar_range <- + campagnes %>% + distinct(jaar) %>% + pull(jaar) %>% + range() + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) + +metadata <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_metadata.xlsx")) + +write_xlsx(list(locaties = locaties, + campagnes = campagnes, + aantallen = aantallen, + gewicht = gewicht, + metadata = metadata), + path = str_c(pad_data, filename, "_", str_c(jaar_range, collapse = "_"), ".xlsx")) + +``` + diff --git a/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd new file mode 100644 index 0000000..ac1a9f7 --- /dev/null +++ b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd @@ -0,0 +1,670 @@ +--- +params: + hoofdstuk: "090_vissen" +title: "visdata ankerkuil" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r variabelen} + +laatste_jaar <- as.numeric(jaar_moneos) - 1 +pad_data_historisch <- str_c(pad_prj_schelde, pad_moneos, as.numeric(jaar_moneos) - 1, "/", params$hoofdstuk, "/data/") + +locaties_name <- "ankerkuil_Zeeschelde_locaties" +metadata_name <- "ankerkuil_Zeeschelde_metadata" +filename <- "ankerkuil_Zeeschelde" + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) %>% + mutate(locatiecode = as.character(locatiecode)) + +``` + + +```{r inlezen historische data} + +filename_historisch <- + list.files(path = pad_data_historisch, + pattern = "ankerkuil_Zeeschelde_VLIZ") + +campagnes_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "campagnes") + +aantal_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "aantallen") + +gewicht_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "gewicht") + +``` + + +```{r inlezen recente data} + +data_recent <- + read_xlsx(str_c(pad_data, "ankerkuil_Zeeschelde_ruw_VIS_", + laatste_jaar, + ".xlsx"), + sheet = "data") + +(old_names <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam) %>% + arrange(Gebiedcode) %>% + pull(Gebiednaam)) + +gebieden <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam, round(LambertX), round(LambertY)) %>% + arrange(Gebiedcode) + +locaties <- + locaties %>% + filter(locatiecode %in% gebieden$Gebiedcode) + +locatie_nrs <- locaties$locatiecode +locatie_namen <- locaties$locatie + +(gebieden <- + gebieden %>% + mutate(new_names = locatie_namen[order(locatie_nrs)])) + +level_key <- locatie_namen[order(locatie_nrs)] +names(level_key) <- old_names + +``` + + +```{r correcties soortnamen} + +# rename_vector_historisch <- +# c("chinese wolhandkrab" = "wolhandkrab") +rename_vector_historisch <- + c("gewone zwemkrab" = "zwemkrab") + +aantal_historisch <- + aantal_historisch %>% + rename(!!!rename_vector_historisch) +gewicht_historisch <- + gewicht_historisch %>% + rename(!!!rename_vector_historisch) + + +data_recent <- + data_recent %>% + mutate(Soort = case_match(Soort, + "blauwband" ~ "blauwbandgrondel", + "zandspiering" ~ "kleine zandspiering", + "klein zeepaardje" ~ "langsnuitzeepaardje", + "gewone steurgarnaal" ~ "steurgarnalen", + "steurgarnaal" ~ "steurgarnalen", + "grijze garnaal" ~ "grijze garnalen", + .default = Soort)) + +``` + + +```{r correctie gewicht met verdunningsfactor} + +data_recent <- + data_recent %>% + mutate(TAXONGEW = TAXONGEW*METI_DILUTION_FACTOR, + TAXONTOTGEW = TAXONTOTGEW*METI_DILUTION_FACTOR) + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data_recent %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r controle uniek aantal of gewicht in ruwe data} + +aantal_NA_of_0_ruw <- + data_recent %>% + filter(is.na(TAXONAANTAL) | + near(TAXONAANTAL, 0)) %>% + select("MetingPivotKey", "WaarnemingKey", "MetingID", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "uren", "volume", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") + +gewicht_NA_of_0_ruw <- + data_recent %>% + filter(if_all(c(TAXONGEW, TAXONTOTGEW), ~is.na(.)) | + if_all(c(TAXONGEW, TAXONTOTGEW), ~near(., 0))) %>% + select("MetingPivotKey", "WaarnemingKey", "MetingID", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "uren", "volume", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") + +soort_NA <- + gewicht_NA_of_0_ruw %>% + filter(TAXONAANTAL == 1) %>% + pull(Soort) %>% + unique() + +if (length(soort_NA) > 0) { + data_lengte <- + data_recent %>% + filter(Soort %in% soort_NA, + !is.na(TAXONLEN)) %>% + select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) + + data_lengte %>% + ggplot(aes(TAXONLEN, TAXONGEW)) + + geom_point() + + geom_smooth(method = "lm") + + scale_x_log10() + + scale_y_log10() + + facet_wrap(~Soort) + + regressie_lengte <- + data_lengte %>% + group_by(Soort) %>% + summarise(int = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[1], + slope = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[2]) %>% + ungroup() + + datum_soort <- + data_recent %>% + mutate(gewicht = if_else(is.na(TAXONGEW), + TAXONTOTGEW, TAXONGEW)) %>% + select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% + filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% + drop_na() %>% + group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% + summarise(across(everything(), sum)) %>% + ungroup() + + +gewicht_NA <- + gewicht_NA_of_0_ruw %>% + select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, + TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN) %>% + left_join(datum_soort) %>% + left_join(regressie_lengte) %>% + replace_na(list(aantal = 0, gewicht = 0)) %>% + mutate(prop_aantal = TAXONAANTAL/aantal, + gewicht_imputed = + case_when( + TAXONAANTAL > 1 ~ gewicht*prop_aantal, + TRUE ~ exp(int + slope*log(TAXONLEN)) + )) + +write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + # NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) +} + +``` + + +```{r toevoegen imputation aan ruwe data} + +if (length(soort_NA) > 0) { + keys <- gewicht_NA$MetingPivotKey + + dat_before <- + data_recent %>% + filter(MetingPivotKey %in% keys) + + for (k in keys) { + data_recent$TAXONGEW[data_recent$MetingPivotKey == k] <- + gewicht_NA$gewicht_imputed[gewicht_NA$MetingPivotKey == k] + } + + dat_after <- + data_recent %>% + filter(MetingPivotKey %in% keys) +} + +``` + + +```{r data per datum} + +data_per_datum <- + data_recent %>% + select(locatiecode = Gebiedcode, locatie = Gebiednaam, datum = Begindatum, + getijde = Methodenaam, uren, volume, + soort = Soort, aantal = TAXONAANTAL, gewicht_ind = TAXONGEW, gewicht_tot = TAXONTOTGEW, + temperatuur = ABME_TEMPERATUUR, zuurstof = ABME_ZUURSTOF, zuurstof_perc = ABME_ZUURSTOFPROCENT, + ph = ABME_PH, turbiditeit = ABME_TURBIDITEIT, conductiviteit = ABME_CONDUCTIVITEIT) %>% + mutate(locatie = recode(locatie, !!!level_key), + datum = date(datum), + jaar = year(datum), + maand = month(datum), + seizoen = + case_when( + maand %in% 3:5 ~ "voorjaar", + maand %in% 6:7 ~ "zomer", + maand %in% 8:10 ~ "najaar", + maand %in% 12:2 ~ "winter"), + getijde = str_remove(getijde, "Ankerkuil-"), + soort = str_to_lower(soort)) %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, getijde, uren, volume, soort) %>% + summarise(n = n(), + gewicht = sum(if_else(is.na(gewicht_ind), + gewicht_tot, gewicht_ind), + na.rm = FALSE), + aantal = sum(aantal, na.rm = FALSE), + across(c(temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit), + ~mean(., na.rm = TRUE)), + .groups = "drop") + +``` + + +```{r controle NA in aantal of gewicht in geaggregeerde data} + +dat_NA <- + data_per_datum %>% + filter(is.na(aantal) | is.na(gewicht)) + +``` + + +```{r controle ontbrekende campagnes} + +campagnes <- + data_per_datum %>% + select(locatie, jaar, maand, seizoen, getijde) %>% + distinct() +camp_tot <- + campagnes %>% + expand(locatie, jaar, seizoen, getijde) + +campagnes_ontbrekend <- + camp_tot %>% + anti_join(campagnes) + +campagnes_NA_or_0 <- + data_per_datum %>% + group_by(locatiecode, locatie, datum, jaar, seizoen, getijde, uren, volume) %>% + summarise(n = sum(n), aantal = sum(aantal, na.rm = TRUE), gewicht = sum(gewicht, na.rm = TRUE)) %>% + ungroup() %>% + arrange(datum, locatie, getijde) %>% + filter(if_any(.cols = everything(), .fns = ~is.na(.)) | + if_any(.cols = c(uren, volume), ~near(., 0))) + +``` + + +```{r controle uniek aantal of gewicht} + +uniek_aantal_of_gewicht <- + data_per_datum %>% + select(locatiecode, locatie, datum, jaar, maand, seizoen, getijde, uren, volume, soort, n, aantal, gewicht) %>% + arrange(datum, locatie, getijde) %>% + filter(if_any(c(aantal, gewicht), ~is.na(.)) | + (if_any(c(aantal, gewicht), ~near(., 0)) & !if_all(c(aantal, gewicht), ~near(., 0)))) + + +uniek_aantal_of_gewicht_vis <- + uniek_aantal_of_gewicht %>% + filter(!str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +uniek_aantal_of_gewicht_inv <- + uniek_aantal_of_gewicht %>% + filter(str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + + +write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA_of_0_ruw), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) + + +(uniek_aantal_of_gewicht_historisch <- + symdiff( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[is.na(.) | . > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[is.na(.) | . > 0] %>% + names())) + +``` + + +```{r vergelijking aanwezige soorten met historisch} + +(soorten_historisch_aanwezig <- + union( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names()) %>% + sort()) + +(soorten_historisch_afwezig <- + intersect( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names()) %>% + sort()) + +intersect(soorten_historisch_aanwezig, soorten_historisch_afwezig) +setdiff(aantal_historisch %>% + select(-ID_afvissing) %>% + names(), + union(soorten_historisch_aanwezig, soorten_historisch_afwezig)) + + +(soorten_recent_aanwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal > 0) %>% + pull(soort) %>% + sort()) + +(soorten_recent_afwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal == 0) %>% + pull(soort) %>% + sort()) + +intersect(soorten_recent_aanwezig, soorten_recent_afwezig) +setdiff(data_per_datum %>% + distinct(soort) %>% + pull(), + union(soorten_recent_aanwezig, soorten_recent_afwezig)) + + +(soorten_totaal_afwezig <- + setdiff(soorten_historisch_afwezig, soorten_recent_aanwezig) %>% + sort()) + +soorten_totaal_aanwezig <- + union(soorten_historisch_aanwezig, soorten_recent_aanwezig) %>% + sort() + +(soorten_totaal_aanwezig_invertebraten <- + soorten_totaal_aanwezig %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + sort()) + +(soorten_totaal_aanwezig_vis <- + setdiff(soorten_totaal_aanwezig, soorten_totaal_aanwezig_invertebraten) %>% + sort()) + +(soorten_totaal_aanwezig <- + c(soorten_totaal_aanwezig_vis, soorten_totaal_aanwezig_invertebraten)) + + +(soorten_totaal <- + union(soorten_totaal_aanwezig, soorten_totaal_afwezig) %>% + sort()) + +(unieke_soorten_historisch_aanwezig <- + setdiff(soorten_historisch_aanwezig, + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_historisch_totaal <- + setdiff(union(soorten_historisch_aanwezig, soorten_historisch_afwezig), + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_recent_aanwezig <- + setdiff(soorten_recent_aanwezig, + soorten_historisch_aanwezig) %>% + sort()) + +# haringachtigen <- +# data_per_datum %>% +# filter(soort %in% c("haring", "sprot", "haringachtigen")) +# +# grondel_sp <- +# data_per_datum %>% +# filter(soort == "grondel sp") +# +# zwemkrab <- +# data_per_datum %>% +# filter(str_detect(soort, "zwemkrab")) + +``` + + + + + + + + + + + + + + +```{r sheets finale data recent} + +campagnes_recent <- + data_per_datum %>% + select(locatie, datum, jaar, seizoen, getijde, uren, volume, + temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit) %>% + distinct() %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything()) %>% + arrange(ID_afvissing) + +aantallen_recent <- + data_per_datum %>% + select(locatie, datum, getijde, soort, aantal) %>% + pivot_wider(names_from = soort, + values_from = aantal, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum, -getijde) %>% + arrange(ID_afvissing) + +gewicht_recent <- + data_per_datum %>% + select(locatie, datum, getijde, soort, gewicht) %>% + pivot_wider(names_from = soort, + values_from = gewicht, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum, -getijde) %>% + arrange(ID_afvissing) + +``` + + +```{r samenvoegen recent met historisch} + +aantal_historisch_finaal <- + aantal_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(aantal_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + +gewicht_historisch_finaal <- + gewicht_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + + +start_ID <- max(campagnes_historisch$ID_afvissing) + +campagnes_recent_finaal <- + campagnes_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) + +aantal_recent_finaal <- + aantallen_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(aantallen_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + +gewicht_recent_finaal <- + gewicht_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + + +soorten_order <- + soorten_totaal_aanwezig + +campagnes <- + campagnes_historisch %>% + bind_rows(campagnes_recent_finaal) %>% + mutate(datum = ymd(datum)) + + +aantallen <- + aantal_historisch_finaal %>% + bind_rows(aantal_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +gewicht <- + gewicht_historisch_finaal %>% + bind_rows(gewicht_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +# NAs vervangen voor soorten die overal nul zijn, maar niet wanneer aantallen of gewicht wel aanwezig zijn + +# afwezige_soorten <- +# intersect( +# aantallen %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names(), +# gewicht %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names()) +# +# soorten_replace <- +# as.list(rep(0, length(afwezige_soorten))) +# names(soorten_replace) <- afwezige_soorten +# +# aantallen <- +# aantallen %>% +# replace_na(soorten_replace) +# gewicht <- +# gewicht %>% +# replace_na(soorten_replace) + +``` + + +```{r wegschrijven data} + +filename <- "ankerkuil_Zeeschelde_VLIZ" + +jaar_range <- + campagnes %>% + distinct(jaar) %>% + pull(jaar) %>% + range() + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) + +metadata <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_metadata.xlsx")) + +write_xlsx(list(locaties = locaties, + campagnes = campagnes, + aantallen = aantallen, + gewicht = gewicht, + metadata = metadata), + path = str_c(pad_data, filename, "_", str_c(jaar_range, collapse = "_"), ".xlsx")) + +``` + diff --git a/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd b/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd new file mode 100644 index 0000000..c8246c8 --- /dev/null +++ b/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd @@ -0,0 +1,190 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "visdata fuiken controle EMSE" +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(forcats) +library(readxl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) +# %>% +# select(-datum, -jaar, -maand) %>% +# group_by(locatie, OMES, EMSE_niveau3) %>% +# summarise(across(everything(), ~sum(., na.rm = TRUE))) %>% +# ungroup() + + +soorten <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + +fuiken_aantal_long <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + filter(!str_detect(soort, "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + left_join(soorten) + +``` + + +#### controle EMSE + +```{r EMSE} + +nieuwe_soorten <- + fuiken_aantal_long %>% + filter(is.na(fuiken)) %>% + distinct(soort, fuiken, ankerkuil) + +voorkomen <- + fuiken_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) + +soorten <- + soorten %>% + left_join(voorkomen %>% + select(soort, `N>0`)) + +# soorten %>% +# writexl::write_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + + +fuiken_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) %>% + ggplot(aes(fct_inorder(soort), `N>0`+0.1, fill = inEMSE)) + + geom_col() + + scale_y_log10() + + labs(x = "soort", + y = "aantal afvissingen waarbij N>0") + + theme_bw() + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# # filter(N_crit) %>% +# group_by(soort, inEMSE) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# filter(aantal > 0) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) +# +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# filter(N_crit) %>% +# group_by(soort, inEMSE) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# # filter(aantal >= 0.1) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) +# +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# filter(N_crit) %>% +# group_by(soort, inEMSE, jaar) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# # filter(aantal >= 0.1) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# facet_wrap("jaar", ncol = 1) + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +``` + diff --git a/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd b/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd new file mode 100644 index 0000000..cba4f24 --- /dev/null +++ b/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd @@ -0,0 +1,135 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "visdata ankerkuil controle EMSE" +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(forcats) +library(readxl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ") + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, uren, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +soorten <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + +ankerkuil_aantal_long <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + filter(!str_detect(soort, "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + left_join(soorten) + +``` + + +#### controle EMSE + +```{r EMSE} + +nieuwe_soorten <- + ankerkuil_aantal_long %>% + filter(is.na(ankerkuil)) %>% + distinct(soort, fuiken, ankerkuil) + +voorkomen <- + ankerkuil_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) + +soorten <- + soorten %>% + left_join(voorkomen %>% + select(soort, `N>0`)) + +``` + + +```{r figuren vergelijking EMSE} + +ankerkuil_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) %>% + ggplot(aes(fct_inorder(soort), `N>0`+0.1, fill = inEMSE)) + + geom_col() + + scale_y_log10() + + labs(x = "soort", + y = "aantal afvissingen waarbij N>0") + + theme_bw() + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +``` + diff --git a/moneos_2025/090_vissen/35_moneos_soorten_kleurcode.Rmd b/moneos_2025/090_vissen/35_moneos_soorten_kleurcode.Rmd new file mode 100644 index 0000000..5d7c3e7 --- /dev/null +++ b/moneos_2025/090_vissen/35_moneos_soorten_kleurcode.Rmd @@ -0,0 +1,956 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata fuiken" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +# pad_figuren <- maak_pad(params$hoofdstuk, "figuren/fuiken") +# pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/fuiken") + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone_fuiken <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie_fuiken <- levels(locatie_scheldezone_fuiken$locatie) + +locatie_scheldezone_ankerkuil <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie_ankerkuil <- levels(locatie_scheldezone_ankerkuil$locatie) + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + + +``` + +##### datasets voor aantal en gewicht: + +```{r data fuiken} + +(filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") %>% + .[str_detect(., "~\\$", negate = TRUE)]) + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +fuiken_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +data_fuiken <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + left_join(fuiken_gewicht %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r data ankerkuil} + +(filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ")) %>% + .[str_detect(., "~\\$", negate = TRUE)] + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +ankerkuil_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + + +data_ankerkuil <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + left_join(ankerkuil_gewicht %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie_ankerkuil)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r samenvoegen Zandvliet en Paardenschor} + +data_fuiken <- + data_fuiken %>% + mutate(locatie = + if_else(locatie == "Zandvliet", + "Paardenschor", + locatie)) + +``` + + +```{r optellen eb vloed per locatie & campagne} + +(groupvars <- + names(data_ankerkuil) %>% + setdiff(c("datum", "getijde", "volume", "aantal", "gewicht"))) + +# setdiff(names(data_ankerkuil), groupvars) + +data_ankerkuil <- + data_ankerkuil %>% + select(-datum, -getijde) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_ankerkuil %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r optellen datums per locatie & campagne} + +dupes_voor <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +groupvars <- + names(data_fuiken) %>% + setdiff(c("datum", "fuikdagen", "aantal", "gewicht")) + +data_fuiken <- + data_fuiken %>% + select(-datum) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +prop_lim <- 0.1 + +``` + + +```{r selectie data} + +data_fuiken <- + data_fuiken %>% + filter(!str_detect(soort, "hybride"), + seizoen != "winter") + +data_ankerkuil <- + data_ankerkuil %>% + filter(seizoen != "winter") + +``` + + +```{r enkel-vissen fuiken} + +soorten <- + data_fuiken %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis_fuiken <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_fuiken <- + data_fuiken %>% + filter(soort %in% soorten_vis_fuiken) + +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(fuiken)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis_fuiken) +# setdiff(soorten_vis_fuiken, soorten_fuiken_sheet) + +``` + + +```{r enkel-vissen ankerkuil} + +soorten <- + data_ankerkuil %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis_ankerkuil <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_ankerkuil <- + data_ankerkuil %>% + filter(soort %in% soorten_vis_ankerkuil) + + +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(ankerkuil)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis) +# setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r verschil soorten fuiken - ankerkuil} + +setdiff(soorten_vis_fuiken, soorten_vis_ankerkuil) +setdiff(soorten_vis_ankerkuil, soorten_vis_fuiken) + +``` + + +```{r aantal-en-gewicht-per-fuikdag} + +data_fuiken <- + data_fuiken %>% + mutate(aantal_per_fuikdag = aantal/fuikdagen, + gewicht_per_fuikdag = gewicht/fuikdagen) + +``` + + +```{r salgroep en dieet haringachtigen} + +soortenlijst %>% + filter(soort %in% c("haring", "sprot")) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep = if_else(soort == "haringachtigen", "mariene migranten", salgroep), + dieet = if_else(soort == "haringachtigen", "planktivoren", dieet)) + +``` + + +```{r aantal-en-gewicht-per-kub} + +data_ankerkuil <- + data_ankerkuil %>% + mutate(aantal_per_kub = aantal/volume, + gewicht_per_kub = gewicht/volume) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_fuiken %>% + distinct(salgroep) + +data_fuiken %>% + distinct(dieet) + +data_fuiken <- + data_fuiken %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_fuiken %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_fuiken %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_fuiken$indeling) +# levels(indeling_EMSE$indeling) + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_ankerkuil %>% + distinct(salgroep) + +data_ankerkuil %>% + distinct(dieet) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_ankerkuil %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_ankerkuil %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +``` + + +```{r soorten kleur} + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) + +(soorten_fuiken_1 <- + relatief_aantal_fuiken %>% + distinct(soort) %>% + filter(str_detect(soort, "rest", negate = TRUE)) %>% + pull()) + + +relatieve_aantallen_EMSE_fuiken <- + data_fuiken %>% + left_join(locatie_scheldezone_fuiken) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag), + relatief_gewicht = gewicht_per_fuikdag/sum(gewicht_per_fuikdag)) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() + +(soorten_fuiken_2 <- + relatieve_aantallen_EMSE_fuiken %>% + distinct(soort) %>% + filter(str_detect(soort, "rest", negate = TRUE)) %>% + pull()) + + +relatief_aantal_ankerkuil <- + data_ankerkuil %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim | relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +(soorten_ankerkuil_1 <- + relatief_aantal_ankerkuil %>% + distinct(soort) %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE)) %>% + pull()) + +relatieve_aantallen_EMSE_ankerkuil <- + data_ankerkuil %>% + left_join(locatie_scheldezone_ankerkuil) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub), + relatief_gewicht = gewicht_per_kub/sum(gewicht_per_kub)) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() + +(soorten_ankerkuil_2 <- + relatieve_aantallen_EMSE_ankerkuil %>% + distinct(soort) %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE)) %>% + pull()) + + +(soorten_kleur <- + soorten_fuiken_1 %>% + union(soorten_fuiken_2) %>% + union(soorten_ankerkuil_1) %>% + union(soorten_ankerkuil_2)) + + + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_fuiken_1 <- + relatief_aantal_fuiken %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatieve_aantallen_EMSE_fuiken <- + data_fuiken %>% + left_join(locatie_scheldezone_fuiken) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag), + relatief_gewicht = gewicht_per_fuikdag/sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_fuiken_2 <- + relatieve_aantallen_EMSE_fuiken %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatief_aantal_ankerkuil <- + data_ankerkuil %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_ankerkuil_1 <- + relatief_aantal_ankerkuil %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatieve_aantallen_EMSE_ankerkuil <- + data_ankerkuil %>% + left_join(locatie_scheldezone_ankerkuil) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub), + relatief_gewicht = gewicht_per_kub/sum(gewicht_per_kub)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_ankerkuil_2 <- + relatieve_aantallen_EMSE_ankerkuil %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + + +(soorten_vis <- + soorten_vis_fuiken %>% + union(soorten_vis_ankerkuil)) + + +(soorten_kleur <- + soorten_fuiken_1 %>% + union(soorten_fuiken_2) %>% + union(soorten_ankerkuil_1) %>% + union(soorten_ankerkuil_2) %>% + group_by(soort) %>% + summarise(across(everything(), max)) %>% + ungroup() %>% + arrange(desc(max_rel), soort)) + + +soorten_indeling_kleur <- + soorten_kleur %>% + left_join(soortenlijst %>% + filter(soort %in% soorten_kleur$soort) %>% + select(soort, salgroep, dieet)) %>% + mutate(pos = NA_integer_, + kleur = NA_character_) + +soorten_indeling_n <- + soorten_indeling_kleur %>% + count(salgroep, dieet) %>% + arrange(desc(n)) + +n_kleur <- nrow(soorten_kleur) + +save(soorten_indeling_kleur, file = str_c(pad_data, "soorten_kleur.RData")) + +``` + + +```{r test kleurcode, eval=FALSE} + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) + + +library(Polychrome) +swatch(kelly.colors(50)) +swatch(glasbey.colors(50)) +swatch(green.armytage.colors(50)) +swatch(palette36.colors(50)) +swatch(alphabet.colors(50)) +swatch(light.colors(50)) +swatch(dark.colors(50)) +swatch(sky.colors(50)) + +seed <- c("#ff0000", "#00ff00", "#0000ff") +mycolors <- createPalette(50, seed, prefix="mine") +swatch(mycolors) + +# n <- 3 +# seq(1,by=n,length.out=n_kleur)%%n_kleur+1 +# s <- 3 +for(s in 14:25) { + + # set.seed(s) + # set.seed(45) + + # n_rest <- n_kleur + # n_indeling <- nrow(soorten_indeling_n) + # serie <- 1:n_rest + # for (i in 1:n_indeling) { + # if (i < n_indeling) { + # # strt <- min(serie) + # lng <- soorten_indeling_n[i,]$n + # sq <- seq(1, by = n_rest%/%lng, length.out = lng) + # sel <- serie[sq] + # if (lng > 1) + # sel <- sample(sel) + # serie <- + # setdiff(serie, sel) + # n_rest <- length(serie) + # } else { + # sel <- serie + # } + # soorten_indeling_kleur[soorten_indeling_kleur$salgroep == soorten_indeling_n[i, ]$salgroep & + # soorten_indeling_kleur$dieet == soorten_indeling_n[i,]$dieet, "pos"] <- sel + # print(sel) + # } + + # s <- 14 + + + sq <- seq(1,by=s,length.out=n_kleur)%%(n_kleur+1) + lm <- n_kleur-((s-1)%%(s)) + sq[sq<=lm] <- sq[sq<=lm] + 1 + # sort(sq) + + soorten_indeling_kleur$pos <- sq + + + seed <- c("#ff6000", "#0a6f00", "#000fff") + soorten_indeling_kleur$kleur <- + # wes_palette("Darjeeling1", + # type = "continuous", + # n = n_kleur) %>% + # scales::pal_hue()(n_kleur) %>% + createPalette(n_kleur, seed) + # %>% + # unname() + # %>% + # .[soorten_indeling_kleur$pos] + + # swatch(createPalette(n_kleur, seed)) + + # my_pal_wes <- + # c(wes_palette("Darjeeling1", + # type = "continuous", + # n = length(soorten_kleur)) %>% + # unname() %>% + # sample(), + # "azure", + # "darkslategrey") + # names(my_pal_wes) <- + # c(soorten_kleur, "haringachtigen", "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + + the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_fuiken$soort)] + + pl <- + relatief_aantal_fuiken %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(title = str_c("seed = ", s), + x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + print(pl) + +} + + +for(s in 76) { + + set.seed(s) + + my_pal_wes <- + c(wes_palette("Darjeeling1", + type = "continuous", + n = length(soorten_kleur)) %>% + unname() %>% + sample(), + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_kleur, "haringachtigen", "rest") + + the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_ankerkuil$soort)] + + pl <- + relatief_aantal_fuiken %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(title = str_c("seed = ", s), + x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + print(pl) + +} + +``` + diff --git a/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd b/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd new file mode 100644 index 0000000..2017d2e --- /dev/null +++ b/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd @@ -0,0 +1,2128 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata fuiken" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren/fuiken") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/fuiken") + +``` + + +```{r excel sheets} + +sheets <- NULL +sheets_figuren <- NULL + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie <- levels(locatie_scheldezone$locatie) + +levels_seizoen_locatie <- + sapply(c("voorjaar", "zomer", "najaar"), + function(x) paste(x, levels_locatie, sep = "_")) %>% + c() + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +# levels_scheldezone_refactor <- c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +``` + +##### datasets voor aantal en gewicht: + +```{r inlezen-data} + +filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") %>% + .[str_detect(., "~\\$", negate = TRUE)] + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +fuiken_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +data_fuiken <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + left_join(fuiken_gewicht %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r check meerdere datums per locatie en seizoen} + +campagne_dupes <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + # select(-datum) %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r samenvoegen Zandvliet en Paardenschor} + +data_fuiken <- + data_fuiken %>% + mutate(locatie = + if_else(locatie == "Zandvliet", + "Paardenschor", + locatie)) + +``` + + +```{r optellen datums per locatie & campagne} + +dupes_voor <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +groupvars <- + names(data_fuiken) %>% + setdiff(c("datum", "fuikdagen", "aantal", "gewicht")) + +data_fuiken <- + data_fuiken %>% + select(-datum) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +vroegste_jaar <- + data_fuiken %>% + pull(jaar) %>% + min() + +laatste_jaar <- + data_fuiken %>% + pull(jaar) %>% + max() + +prop_lim <- 0.1 +mult_fuik <- 1 + + +get_lab_aantal <- + function() { + if (mult_fuik > 1) + lab <- expr(paste("gem. aantal ind. / ", !!mult_fuik, "fuikdagen")) + else + lab <- expr(paste("gem. aantal ind. / fuikdag")) + lab + } + +get_lab_gewicht <- + function() { + if (mult_fuik > 1) + lab <- expr(paste("gem. biomassa [g/", !!mult_fuik, "fuikdagen]")) + else + lab <- expr(paste("gem. biomassa [g/fuikdag]")) + lab + } + +``` + + +```{r selectie data} + +data_fuiken <- + data_fuiken %>% + filter(!str_detect(soort, "hybride"), + seizoen != "winter") + +``` + + +```{r kleurcodes soorten} + +load(file = str_c(pad_data, "soorten_kleur.RData")) + +# set.seed(58) +# set.seed(61) +# set.seed(73) +# set.seed(76) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(soorten_kleur)) %>% +# unname() %>% +# sample(), +# "darkslategrey") +# names(my_pal_wes) <- +# c(soorten_kleur, "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + +``` + + +```{r enkel-vissen} + +soorten <- + data_fuiken %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_fuiken <- + data_fuiken %>% + filter(soort %in% soorten_vis) + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) + +soorten_fuiken_sheet <- + soortenlijst %>% + filter(!is.na(fuiken)) %>% + pull(soort) + +setdiff(soorten_fuiken_sheet, soorten_vis) +setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r aantal-en-gewicht-per-fuikdag} + +data_fuiken <- + data_fuiken %>% + mutate(aantal_per_fuikdag = aantal/fuikdagen, + gewicht_per_fuikdag = gewicht/fuikdagen) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_fuiken %>% + distinct(salgroep) + +data_fuiken %>% + distinct(dieet) + +data_fuiken <- + data_fuiken %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_fuiken %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_fuiken %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_fuiken$indeling) +# levels(indeling_EMSE$indeling) + +``` + +#### relatie aantal - gewicht + +```{r relatie-aantal-gewicht, eval = FALSE} + +# data_fuiken %>% +# ggplot(aes(aantal, gewicht)) + +# geom_point() + +# geom_smooth(span = 10, se = FALSE) + +# facet_wrap(~soort, +# scales = "free", +# ncol = 5) + +data_fuiken %>% + ggplot(aes(aantal + 1, gewicht + 1)) + + geom_point() + + geom_smooth(span = 10, se = FALSE) + + scale_x_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + scale_y_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + labs(x = "aantal", + y = "gewicht") + + facet_wrap(~soort, + scales = "free", + ncol = 8) + +# # ggsave(paste0(pad_figuren, "relatie_aantal_gewicht.jpg")) + +``` + + +#### aantal soorten + +```{r aantal-soorten} + +aantal_soorten_seizoen_locatie <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_seizoen_locatie %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 3, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + # guides(fill="none", + # color = "none") + + facet_grid(seizoen ~ locatie) + + theme(strip.text = element_text(size = 12)) + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8) + + +aantal_soorten_seizoen <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, seizoen) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + mutate(seizoen = "totaal over seizoenen")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen"))) + +aantal_soorten_seizoen %>% + ggplot(aes(seizoen, soorten, fill = ordered(jaar), color = ordered(jaar))) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + alpha = 0.8) + + geom_text(aes(y = soorten + 1, label = soorten), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5) + + +aantal_soorten_locatie <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, locatie) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + left_join(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten_tot")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + mutate(locatie = "totaal over locaties") %>% + left_join(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten_tot") %>% + mutate(locatie = "totaal over locaties"))) %>% + mutate(locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_locatie %>% + ggplot(aes(locatie, soorten_gem, group = jaar)) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1) + + geom_col(aes(y = soorten_tot, fill = ordered(jaar), color = ordered(jaar)), + position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1, + alpha = 0.75) + + geom_text(aes(y = soorten_tot + 1, label = soorten_tot), + position = position_dodge(width = 0.8), + size = 1.5, color = "steelblue4", fontface = "bold") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5) + + +aantal_soorten_totaal <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") + +aantal_soorten_totaal %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 2, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + guides(fill="none", + color = "none") + +ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4) + + +sheets_figuren[["aantal_soorten_seizoen_locatie"]] <- + aantal_soorten_seizoen_locatie %>% + pivot_wider(id_cols = c(jaar, seizoen), + names_from = locatie, + values_from = soorten) + +sheets_figuren[["aantal_soorten_seizoen"]] <- + aantal_soorten_seizoen %>% + pivot_wider(id_cols = c(jaar), + names_from = seizoen, + values_from = soorten) + +sheets_figuren[["aantal_soorten_locatie"]] <- + aantal_soorten_locatie +# %>% +# pivot_wider(id_cols = c(jaar), +# names_from = locatie, +# values_from = soorten) + +sheets_figuren[["aantal_soorten_totaal"]] <- + aantal_soorten_totaal + +``` + + +```{r overzicht-aantal-soorten} + +tabel_aantal_soorten <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, locatie, soort) %>% + count(seizoen, locatie, name = "soorten") %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(locatie, soort) %>% + count(locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, soort) %>% + count(seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + count(name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) %>% + pivot_wider(id_cols = locatie, names_from = seizoen, values_from = soorten) %>% + arrange(locatie) + +knitr::kable(tabel_aantal_soorten) + +sheets[["aantal_soorten"]] <- tabel_aantal_soorten + +``` + + +#### overzicht gevangen soorten + +```{r overzicht-gevangen-soorten} + +tabel_gevangen_soorten <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + mutate(seizoen_locatie = factor(paste(seizoen, locatie, sep = "_"), + levels = levels_seizoen_locatie)) %>% + select(seizoen_locatie, soort) %>% + mutate(aanwezig = "x") %>% + pivot_wider(id_cols = soort, + names_from = seizoen_locatie, + values_from = aanwezig, + values_fill = "") %>% + select(soort, all_of(levels_seizoen_locatie[str_detect(levels_seizoen_locatie, "Zandvliet", negate = TRUE)])) + +knitr::kable(tabel_gevangen_soorten) + +sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten + +``` + +#### nieuwe soorten + +```{r nieuwe soorten} + +(soorten_historisch <- + data_fuiken %>% + filter(jaar != laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_recent <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_nieuw <- + setdiff(soorten_recent, soorten_historisch)) + +data_soorten_nieuw <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(jaar == laatste_jaar, + aantal > 0, + soort %in% soorten_nieuw) + +if (nrow(data_soorten_nieuw) > 0) { + data_soorten_nieuw %>% + ggplot(aes(seizoen, aantal)) + + geom_col(aes(fill = soort)) + + facet_wrap(~locatie) +} + +sheets[["nieuwe_soorten"]] <- + data_soorten_nieuw %>% + select(locatie, OMES, EMSE_niveau3, jaar, seizoen, soort, wetensch_naam, salgroep, dieet, + fuikdagen, aantal, gewicht, aantal_per_fuikdag, gewicht_per_fuikdag) + +``` + +#### relatief aantal gevangen individuen + +```{r relatief aantal gevangen individuen laatste jaar, fig.height=6, fig.width=6} + +relatief_aantal_laatste_jaar <- + data_fuiken %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + mutate(soort2 = + case_when( + any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + TRUE ~ "rest" + )) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie)) + + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_aantal_laatste_jaar %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + color = "white", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start = 0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(str_c(pad_figuren, "relatief_aantal_gevangen_individuen.jpg"), width = 6, height = 8) + +``` + + +#### relatieve biomassa gevangen individuen + +```{r relatieve-biomassa-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_gewicht_laatste_jaar <- + data_fuiken %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + mutate(soort2 = + case_when( + any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + TRUE ~ "rest" + )) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(gewicht = sum(gewicht)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + gewicht = round(gewicht/sum(gewicht)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie)) + + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_gewicht_laatste_jaar %>% + mutate(gewicht = if_else(gewicht == 0, NA_real_, gewicht)) %>% + ggplot(aes(x ="", y = gewicht, fill = soort)) + + geom_col(position = "fill", color = "grey60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = gewicht, size = gewicht), + color = "white", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg"), width = 6, height = 8) + +``` + + +```{r tabellen relatief aantal en gewicht laatste jaar} + +sheets_figuren[["relatief_aantal_laatste_jaar"]] <- + relatief_aantal_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = aantal) + +sheets_figuren[["relatief_gewicht_laatste_jaar"]] <- + relatief_gewicht_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = gewicht) + +``` + + +#### diversiteit EMSE + +```{r diversiteit EMSE} + +gemiddeld_diversiteit_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + # add_row(tibble(N = NA, H_sh = NA, H_gs = NA, D_sh = NA, D_gs = NA, + # salgroep = "diadrome soorten", + # indeling = "Diadr -- Benth", + # jaar = vroegste_jaar:laatste_jaar) %>% + # expand_grid(scheldezone = c("SG", "OH", "ZL", "ZK"))) %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "estuariene soorten en mariene migranten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "diadrome soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "zoetwater soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6) + +``` + + +#### aantallen en biomassa EMSE per soort + +```{r relatie soortaantallen vs totale aantallen} + +relatieve_aantallen_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r alternatief 2} + +prop_lim_alt <- 0.2 + +relatieve_aantallen_EMSE_alt <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim_alt, + max_gewicht = relatief_gewicht >= prop_lim_alt) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# relatieve_aantallen_EMSE %>% +# filter(scheldezone == "saliniteitsgradient") %>% +# ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + +# geom_col(width = 0.7, +# alpha = 0.9, +# size = 0.1) + +# scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + +# scale_fill_manual(values = my_pal_wes, na.translate = F) + +# scale_color_manual(values = my_pal_wes, na.translate = F) + +# labs(title = "saliniteitsgradient", +# y = get_lab_aantal()) + +# guides(color = guide_legend(ncol=2), +# fill = guide_legend(ncol=2)) + +# facet_grid(dieet ~ salgroep, scales = "free_y") + +# theme(#legend.position = "none", +# axis.text = element_text(size = 8)) + + +data_split <- + relatieve_aantallen_EMSE_alt %>% + mutate(soort = str_replace(soort, "grondel", "gr.")) %>% + mutate(soort = str_replace(soort, "kleine", "kl.")) %>% + mutate(soort = str_replace(soort, "grote", "gr.")) %>% + mutate(soort = str_replace(soort, "driedoornige", "dried.")) %>% + mutate(soort = str_replace(soort, "tiendoornige", "tiend.")) %>% + mutate(soort = str_replace(soort, "steur", "st.")) %>% + mutate(soort = str_replace(soort, "europese meerval", "meerval")) %>% + group_by(indeling) %>% + nest() + + + +my_pal_wes_kort <- my_pal_wes +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grondel", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "kleine", "kl.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grote", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "driedoornige", "dried.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "tiendoornige", "tiend.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "steur", "st.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "europese meerval", "meerval") + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes_kort[names(my_pal_wes_kort) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(breaks = names(pal_split), values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=6)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.text = element_text(size = 8), + legend.title = element_text(size = 9), + legend.key.size = unit(0.8, "lines")) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE_alt %>% + filter(scheldezone == "saliniteitsgradient") %>% + mutate(salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes, na.translate = F) + + scale_color_manual(values = my_pal_wes, na.translate = F) + + labs(title = "saliniteitsgradient", + y = get_lab_aantal()) + + # guides(color = guide_legend(ncol=2), + # fill = guide_legend(ncol=2)) + + facet_grid(dieet ~ salgroep, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + byrow = FALSE + # , + # align = "v" + , nrow = 4 + ), + NULL, + ncol = 1, rel_heights = c(0.11,1,0.07)), + ncol = 3, rel_widths = c(1.2,0.02,0.9)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_saliniteitsgradient.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r relatie soortbiomassa vs totale biomassa} + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "zoetwater soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r tabellen aantallen gewicht en diversiteit EMSE} + +sheets_figuren[["aantallen_en_gewichten_EMSE"]] <- + relatieve_aantallen_EMSE %>% + select(jaar, scheldezone, soort, salgroep, dieet, indeling, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["diversiteit_EMSE"]] <- + gemiddeld_diversiteit_EMSE %>% + select(jaar, scheldezone, salgroep, dieet, indeling, + N, D_sh) + +``` + + +#### sleutelsoorten EMSE + +```{r data sleutelsoorten} + +data_sleutelsoorten_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(soort %in% sleutelsoorten_EMSE$soort) %>% + left_join(sleutelsoorten_EMSE %>% select(soort, scheldezone_rap = scheldezone)) %>% + # filter(map2_lgl(scheldezone_rap, scheldezone, ~str_detect(.x, .y))) %>% + group_by(jaar, soort, salgroep, scheldezone) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +sheets_figuren[["sleutelsoorten_EMSE"]] <- + data_sleutelsoorten_EMSE + +``` + + +```{r sleutelsoorten aantal} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + +```{r sleutelsoorten biomassa} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + + + +#### aantallen en biomassa per saliniteit en dieet + +```{r aantallen en biomassa per salgroep} + +relatieve_aantallen_salgroep <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +data_split <- + relatieve_aantallen_salgroep %>% + group_by(salgroep) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(salgroep, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=6)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 15, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 15, height = 8, bg = "white") + +``` + + +```{r aantallen en biomassa per dieet} + +relatieve_aantallen_dieet <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +data_split <- + relatieve_aantallen_dieet %>% + group_by(dieet) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(dieet, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=5)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") + +``` + + +#### diversiteit per saliniteit en dieet + +```{r diversiteit per salgroep} + +gemiddeld_diversiteit_salgroep <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +gemiddeld_diversiteit_salgroep %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) + +``` + + +```{r diversiteit per dieet} + +gemiddeld_diversiteit_dieet <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0, + !is.na(dieet)) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +gemiddeld_diversiteit_dieet %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) + +``` + + +```{r tabellen per saliniteit en dieet} + +sheets_figuren[["aantallen_en_gewichten_salgroep"]] <- + relatieve_aantallen_salgroep %>% + select(jaar, scheldezone, soort, salgroep, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["aantallen_en_gewichten_dieet"]] <- + relatieve_aantallen_dieet %>% + select(jaar, scheldezone, soort, dieet, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["diversieit_salgroep"]] <- + gemiddeld_diversiteit_salgroep %>% + select(jaar, scheldezone, salgroep, + N, D_sh) + +sheets_figuren[["diversieit_dieet"]] <- + gemiddeld_diversiteit_dieet %>% + select(jaar, scheldezone, dieet, + N, D_sh) + +``` + + +#### wegschrijven tabellen en metadata + +```{r wegschrijven tabellen} + +write_xlsx(sheets, + paste0(pad_tabellen, "tabellen_vissen.xlsx")) + +write_xlsx(sheets_figuren, + paste0(pad_tabellen, "tabellen_figuren.xlsx")) + +``` + + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_jaar = vroegste_jaar, + laatste_jaar = laatste_jaar, + aantal_soorten = + data_fuiken %>% + filter(!is.na(aantal), + aantal > 0) %>% + distinct(soort) %>% + nrow(), + aantal_soorten_laatste_jaar = + data_fuiken %>% + filter(!is.na(aantal), + aantal > 0, + jaar == laatste_jaar) %>% + distinct(soort) %>% + nrow()), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "fuiken_meta_data.csv"), + delim = ";") + +``` diff --git a/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd b/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd new file mode 100644 index 0000000..d02d30d --- /dev/null +++ b/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd @@ -0,0 +1,1943 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata ankerkuil" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren/ankerkuil") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/ankerkuil") + +``` + + +```{r excel sheets} + +sheets <- NULL +sheets_figuren <- NULL + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie <- levels(locatie_scheldezone$locatie) + +levels_seizoen_locatie <- + sapply(c("voorjaar", "zomer", "najaar"), + function(x) paste(x, levels_locatie, sep = "_")) %>% + c() + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +``` + +##### datasets voor aantal en gewicht: + +```{r inlezen-data} + +(filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ")) %>% + .[str_detect(., "~\\$", negate = TRUE)] + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +ankerkuil_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + + +data_ankerkuil <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + left_join(ankerkuil_gewicht %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-inEMSE, -fuiken, -ankerkuil, -opmerking)) + +``` + + +```{r check eb vloed per locatie en seizoen} + +campagne_dupes <- + data_ankerkuil %>% + select(locatie:getijde) %>% + distinct() %>% + # select(-datum) %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r optellen eb vloed per locatie & campagne} + +(groupvars <- + names(data_ankerkuil) %>% + setdiff(c("datum", "getijde", "volume", "aantal", "gewicht"))) + +# setdiff(names(data_ankerkuil), groupvars) + +data_ankerkuil <- + data_ankerkuil %>% + select(-datum, -getijde) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_ankerkuil %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +vroegste_jaar <- + data_ankerkuil %>% + pull(jaar) %>% + min() + +laatste_jaar <- + data_ankerkuil %>% + pull(jaar) %>% + max() + +mult_kub <- 1000 +prop_lim <- 0.1 + + +get_lab_aantal <- + function() { + if (mult_kub > 1) + lab <- expr(paste("gem. aantal ind. / ", !!mult_kub, m^3)) + else + lab <- expr(paste("gem. aantal ind. / ", m^3)) + lab + } + +get_lab_gewicht <- + function() { + if (mult_kub > 1) + lab <- expr(paste("gem. biomassa [g/", !!mult_kub, m^3, "]")) + else + lab <- expr(paste("gem. biomassa [g/", m^3, "]")) + lab + } + +# get_lab_aantal() +# get_lab_gewicht() + +``` + + +```{r selectie data} + +data_ankerkuil <- + data_ankerkuil %>% + filter(seizoen != "winter") + +``` + + +```{r kleurcodes soorten} + +load(file = str_c(pad_data, "soorten_kleur.RData")) +# load(file = str_c("G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dUVZJLVE1U2RobWs/INBODATA/PROJECTEN/PRJ_SCHELDE/VNSC/Rapportage_INBO/2023/090_vissen/data/", "soorten_kleur.RData")) + +# set.seed(58) +# set.seed(61) +# set.seed(73) +# set.seed(76) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(soorten_kleur)) %>% +# unname() %>% +# sample(), +# "darkslategrey") +# names(my_pal_wes) <- +# c(soorten_kleur, "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + +``` + + +```{r enkel-vissen} + +soorten <- + data_ankerkuil %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_ankerkuil <- + data_ankerkuil %>% + filter(soort %in% soorten_vis) + + +# soortenlijst <- +# read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), +# sheet = "EMSE") %>% +# select(-inEMSE, -exoot, -opmerking) +# +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(ankerkuil)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis) +# setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r salgroep en dieet haringachtigen} + +soortenlijst %>% + filter(soort %in% c("haring", "sprot")) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep = if_else(soort == "haringachtigen", "mariene migranten", salgroep), + dieet = if_else(soort == "haringachtigen", "planktivoren", dieet)) + +``` + + +```{r aantal-en-gewicht-per-kub} + +data_ankerkuil <- + data_ankerkuil %>% + mutate(aantal_per_kub = aantal/volume, + gewicht_per_kub = gewicht/volume) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_ankerkuil %>% + distinct(salgroep) + +data_ankerkuil %>% + distinct(dieet) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_ankerkuil %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_ankerkuil %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_ankerkuil$indeling) +# levels(indeling_EMSE$indeling) + +``` + + +```{r exclusie soorten} + +soorten_niet_in_aantal <- + c("grondel sp", "haringachtigen") + +soorten_niet_in_funcgroep <- + c("grondel sp") + +``` + + +#### relatie aantal - gewicht + +```{r relatie-aantal-gewicht, eval = FALSE} + +data_ankerkuil %>% + ggplot(aes(aantal + 1, gewicht + 1)) + + geom_point() + + geom_smooth(span = 10, se = FALSE) + + scale_x_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + scale_y_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + labs(x = "aantal", + y = "gewicht") + + facet_wrap(~soort, + scales = "free", + ncol = 8) + +# # ggsave(paste0(pad_figuren, "relatie_aantal_gewicht.jpg")) + +``` + + +#### aantal soorten + +```{r aantal-soorten} + +aantal_soorten_seizoen_locatie <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_seizoen_locatie %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 3, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + # guides(fill="none", + # color = "none") + + facet_grid(seizoen ~ locatie) + + theme(strip.text = element_text(size = 12)) + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8) + + +aantal_soorten_seizoen <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, seizoen) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + mutate(seizoen = "totaal over seizoenen")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen"))) + +aantal_soorten_seizoen %>% + ggplot(aes(seizoen, soorten, fill = ordered(jaar), color = ordered(jaar))) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + alpha = 0.8) + + geom_text(aes(y = soorten + 1, label = soorten), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5) + + +aantal_soorten_locatie <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, locatie) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + left_join(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten_tot")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + mutate(locatie = "totaal over locaties") %>% + left_join(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten_tot") %>% + mutate(locatie = "totaal over locaties"))) %>% + mutate(locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_locatie %>% + ggplot(aes(locatie, soorten_gem, group = jaar)) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1) + + geom_col(aes(y = soorten_tot, fill = ordered(jaar), color = ordered(jaar)), + position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1, + alpha = 0.75) + + geom_text(aes(y = soorten_tot + 1, label = soorten_tot), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4", fontface = "bold") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5) + + +aantal_soorten_totaal <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") + +aantal_soorten_totaal %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 2, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + guides(fill="none", + color = "none") + +ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4) + + +sheets_figuren[["aantal_soorten_seizoen_locatie"]] <- + aantal_soorten_seizoen_locatie %>% + pivot_wider(id_cols = c(jaar, seizoen), + names_from = locatie, + values_from = soorten) + +sheets_figuren[["aantal_soorten_seizoen"]] <- + aantal_soorten_seizoen %>% + pivot_wider(id_cols = c(jaar), + names_from = seizoen, + values_from = soorten) + +sheets_figuren[["aantal_soorten_locatie"]] <- + aantal_soorten_locatie +# %>% +# pivot_wider(id_cols = c(jaar), +# names_from = locatie, +# values_from = soorten) + +sheets_figuren[["aantal_soorten_totaal"]] <- + aantal_soorten_totaal + +``` + + +```{r overzicht-aantal-soorten} + +tabel_aantal_soorten <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, locatie, soort) %>% + count(seizoen, locatie, name = "soorten") %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(locatie, soort) %>% + count(locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, soort) %>% + count(seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + count(name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) %>% + pivot_wider(id_cols = locatie, names_from = seizoen, values_from = soorten) %>% + arrange(locatie) + +knitr::kable(tabel_aantal_soorten) + +sheets[["aantal_soorten"]] <- tabel_aantal_soorten + +``` + + +#### overzicht gevangen soorten + +```{r overzicht-gevangen-soorten} + +tabel_gevangen_soorten <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + mutate(seizoen_locatie = factor(paste(seizoen, locatie, sep = "_"), + levels = levels_seizoen_locatie)) %>% + select(seizoen_locatie, soort) %>% + mutate(aanwezig = "x") %>% + pivot_wider(id_cols = soort, + names_from = seizoen_locatie, + values_from = aanwezig, + values_fill = "") %>% + select(soort, all_of(levels_seizoen_locatie)) + +knitr::kable(tabel_gevangen_soorten) + +sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten + +``` + + +#### nieuwe soorten + +```{r nieuwe soorten} + +(soorten_historisch <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar != laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_recent <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_nieuw <- + setdiff(soorten_recent, soorten_historisch)) + +data_soorten_nieuw <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + left_join(locatie_scheldezone) %>% + filter(jaar == laatste_jaar, + aantal > 0, + soort %in% soorten_nieuw) + +if (nrow(data_soorten_nieuw) > 0) { + data_soorten_nieuw %>% + ggplot(aes(seizoen, aantal)) + + geom_col(aes(fill = soort)) + + facet_wrap(~locatie) +} + +sheets[["nieuwe_soorten"]] <- + data_soorten_nieuw %>% + select(locatie, OMES, EMSE_niveau3, jaar, seizoen, soort, wetensch_naam, salgroep, dieet, + volume, aantal, gewicht, aantal_per_kub, gewicht_per_kub) + +``` + + +#### relatief aantal gevangen individuen + +```{r relatief-aantal-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_aantal_laatste_jaar <- + data_ankerkuil %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(levels(relatief_aantal_laatste_jaar$soort)) - 1) %>% +# unname(), +# "darkslategrey") +# names(my_pal_wes) <- +# levels(relatief_aantal_laatste_jaar$soort) + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_aantal_laatste_jaar %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + color = "grey60", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + + +#### relatieve biomassa gevangen individuen + +```{r relatieve-biomassa-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_gewicht_laatste_jaar <- + data_ankerkuil %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(gewicht = sum(gewicht)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + gewicht = round(gewicht/sum(gewicht)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(levels(relatief_gewicht_laatste_jaar$soort)) - 1) %>% +# unname(), +# "darkslategrey") +# names(my_pal_wes) <- +# levels(relatief_gewicht_laatste_jaar$soort) + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_gewicht_laatste_jaar %>% + mutate(gewicht = if_else(gewicht == 0, NA_real_, gewicht)) %>% + ggplot(aes(x ="", y = gewicht, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = gewicht, size = gewicht), + color = "grey60", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + + +```{r tabellen relatief aantal en gewicht laatste jaar} + +sheets_figuren[["relatief_aantal_laatste_jaar"]] <- + relatief_aantal_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = aantal) + +sheets_figuren[["relatief_gewicht_laatste_jaar"]] <- + relatief_gewicht_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = gewicht) + +``` + + +#### diversiteit EMSE + +```{r diversiteit EMSE} + +gemiddeld_diversiteit_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "estuariene soorten en mariene migranten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "diadrome soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "zoetwater soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6) + +``` + + +#### aantallen en biomassa EMSE per soort + +```{r relatie soortaantallen vs totale aantallen} + +relatieve_aantallen_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r relatie soortbiomassa vs totale biomassa} + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "zoetwater soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r tabellen aantallen gewicht en diversiteit EMSE} + +sheets_figuren[["aantallen_en_gewichten_EMSE"]] <- + relatieve_aantallen_EMSE %>% + select(jaar, scheldezone, soort, salgroep, dieet, indeling, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["diversiteit_EMSE"]] <- + gemiddeld_diversiteit_EMSE %>% + select(jaar, scheldezone, salgroep, dieet, indeling, + N, D_sh) + +``` + + +#### sleutelsoorten EMSE + +```{r data sleutelsoorten} + +data_sleutelsoorten_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(soort %in% sleutelsoorten_EMSE$soort) %>% + left_join(sleutelsoorten_EMSE %>% select(soort, scheldezone_rap = scheldezone)) %>% + # filter(map2_lgl(scheldezone_rap, scheldezone, ~str_detect(.x, .y))) %>% + group_by(jaar, soort, salgroep, scheldezone) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +sheets_figuren[["sleutelsoorten_EMSE"]] <- + data_sleutelsoorten_EMSE + +``` + + +```{r sleutelsoorten aantal} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + +#### aantallen en biomassa per saliniteit en dieet + +```{r aantallen en biomassa per salgroep} + +relatieve_aantallen_salgroep <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + salgroep = factor(salgroep, + levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +data_split <- + relatieve_aantallen_salgroep %>% + group_by(salgroep) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(salgroep, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=5)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 14, height = 8, bg = "white") + +``` + + +```{r aantallen en biomassa per dieet} + +relatieve_aantallen_dieet <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + dieet = factor(dieet, + levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +data_split <- + relatieve_aantallen_dieet %>% + group_by(dieet) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(dieet, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") + +``` + + +#### diversiteit per saliniteit en dieet + +```{r diversiteit per salgroep} + +gemiddeld_diversiteit_salgroep <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +gemiddeld_diversiteit_salgroep %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) + +``` + + +```{r diversiteit per dieet} + +gemiddeld_diversiteit_dieet <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0, + !is.na(dieet)) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +gemiddeld_diversiteit_dieet %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) + +``` + + +```{r tabellen per saliniteit en dieet} + +sheets_figuren[["aantallen_en_gewichten_salgroep"]] <- + relatieve_aantallen_salgroep %>% + select(jaar, scheldezone, soort, salgroep, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["aantallen_en_gewichten_dieet"]] <- + relatieve_aantallen_dieet %>% + select(jaar, scheldezone, soort, dieet, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["diversieit_salgroep"]] <- + gemiddeld_diversiteit_salgroep %>% + select(jaar, scheldezone, salgroep, + N, D_sh) + +sheets_figuren[["diversieit_dieet"]] <- + gemiddeld_diversiteit_dieet %>% + select(jaar, scheldezone, dieet, + N, D_sh) + +``` + + +#### wegschrijven tabellen en metadata + +```{r wegschrijven tabellen} + +write_xlsx(sheets, + paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx")) + +write_xlsx(sheets_figuren, + paste0(pad_tabellen, "ankerkuil_tabellen_figuren.xlsx")) + +``` + + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_jaar = vroegste_jaar, + laatste_jaar = laatste_jaar, + aantal_soorten = + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(!is.na(aantal), + aantal > 0) %>% + distinct(soort) %>% + nrow(), + aantal_soorten_laatste_jaar = + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(!is.na(aantal), + aantal > 0, + jaar == laatste_jaar) %>% + distinct(soort) %>% + nrow()), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "ankerkuil_meta_data.csv"), + delim = ";") + +``` diff --git a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd new file mode 100644 index 0000000..81a84aa --- /dev/null +++ b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -0,0 +1,321 @@ +```{r 090-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 090-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 090-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + +```{r 090-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 090-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 090-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "vissen_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) + +aantal_soorten <- + nrow(soortenlijst) + +aantal_soorten_fuiken <- + soortenlijst %>% + filter(!is.na(fuiken)) %>% + nrow() + +aantal_soorten_ankerkuil <- + soortenlijst %>% + filter(!is.na(ankerkuil)) %>% + nrow() + +aantal_soorten_beide <- + soortenlijst %>% + filter(!is.na(fuiken) & !is.na(ankerkuil)) %>% + nrow() + +aantal_soorten_enkel_fuiken <- + aantal_soorten_fuiken - aantal_soorten_beide + +aantal_soorten_enkel_ankerkuil <- + aantal_soorten_ankerkuil - aantal_soorten_beide + +# meta_data <- +# read_delim(paste0(pad_data, "vissen_meta_data.csv"), +# delim = ";") +# +# for(i in 1:nrow(meta_data)){ +# ##first extract the object value +# tempobj=meta_data$waarde[i] +# ##now create a new variable with the original name of the list item +# eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +# } + +``` + +# Vissen + +Fichenummer: FICHE S-DS-V-004a -- Vissen (KRW) + +**Joost Vanoverbeke, Erika Van den Bergh, Gunther Van Ryckegem, Rhea Measle, Gerlinde Van Thuyne, Merlijn Jocque** + +## Inleiding + +De meeste vissen hebben een complexe levenscyclus. +Gedurende hun leven doorlopen ze verschillende niveaus in het voedselweb en bevolken ze diverse ecologische niches. +Estuaria zijn voedselrijk en door de diversiteit aan habitats voorzien ze voedsel en leefruimte voor veel jonge en adulte vissen (Baldoa & Drake, 2002). +Voor veel vissoorten vervullen ze verschillende functies naargelang het levensstadium. +Sommige soorten gebruiken estuaria als paaihabitat (Able, 2005; Van Der Meulen et al., 2013). +De kinderkamerfunctie voor jonge vis werd uitgebreid toegelicht door Elliott & Hemingway (2002). +Maes et al. (2007, 2008) en Stevens et al. (2009) gaan dieper in op de functie van estuaria als doorgangszone voor trekvissen. + +Het bestuderen van de visfauna in de Zeeschelde is belangrijk om de invulling van deze functies te begrijpen en om de ecologische lange termijn ontwikkelingen in het gebied op te volgen. +De Zeeschelde verzamelt een belangrijk deel van de bovenstroomse vuilvrachten. +Opvolging van de visstand in de Zeeschelde weerspiegelt dus ook de kwaliteit van de bovenstroomse gebieden. +De Europese Kaderrichtlijn Water (KRW, 2000/60/EG) verplicht om iedere zes jaar de ecologische toestand van oppervlaktewaterlichamen te rapporteren op basis van enkele bio-indicatoren waaronder de visgemeenschap. +De KRW rapportage gebeurt op basis van de daartoe speciaal ontworpen visindices (Breine et al, 2007; 2010). +In deze MONEOS rapportage wordt de Evaluatie Methodiek Schelde Estuarium (EMSE, 2021) toegepast. + +De visgemeenschap in de Zeeschelde wordt jaarlijks opgevolgd met dubbele schietfuiken en met ankerkuilvisserij (Tabel \@ref(tab:090-tabel-visinspanning)), niet alleen omwille van de dynamiek van het systeem maar ook om het ecosysteem herstel te evalueren na jarenlange plaatselijke en tijdelijke zuurstofloze condities (Maris et al., 2011). +Zesjaarlijkse afvissingen, het absolute minimum voor de KRW, geven te grote lacunes om dit herstelproces te documenteren. +Om seizoenale patronen te documenteren vissen we in de lente, zomer en herfst. + +Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, fuikvisserij bemonstert eerder nabij de bodem. +De resultaten van beide vangstmethoden verstrekken complementaire informatie over de kraamkamerfunctie en rekrutering van de visgemeenschappen in het estuarium doorheen het jaar en in de verschillende saliniteitszones. +Algemeen worden meer soorten gevangen met de ankerkuil. +De resultaten van de fuikvangsten leveren echter een hogere Shannon diversiteit (Breine & Van den Bergh, 2022). +De resultaten van het reguliere INBO meetnet worden aangevuld met extra informatie uit de resultaten van een vrijwilligersmeetnet (hier niet gerapporteerd). +Schietfuiken worden in alle EMSE Scheldezones niveau 3 uitgezet. +Aanvankelijk werd ook op de zijrivieren jaarlijks gevist maar sinds 2012 werd dit verminderd naar driejaarlijks omdat de totale inspanning te groot werd en omdat de ecosysteem evaluatie vooral op de Zeeschelde zelf gericht is. +Ankerkuilvisserij kan enkel uitgevoerd worden in de Zeeschelde tot in de zoete zone met lange verblijftijd omdat de geul verder stroomopwaarts daarvoor te nauw wordt. + +INBO fuikvangst- en ankerkuilgegevens zijn beschikbaar via de V.I.S. databank ([https://vis2.inbo.be/](https://vis2.inbo.be/#home)) (Brosens et al., 2015). +Vrijwilligersdata worden afzonderlijk opgeslagen. + +In de huidige rapportage worden ankerkuil data en fuikgegevens van de Zeeschelde besproken. + Ankerkuildata en fuikdata van het reguliere Zeeschelde meetnet worden aangeleverd als xlsx-bestanden aan de Scheldemonitor. + +```{r 090-tabel-visinspanning, results="asis", fig.show='hide', out.width="100%"} +caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*)." +img_file <- paste0(pad_figuren, "visinspanningINBO.jpg") +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) +``` + +## Materiaal en Methode + +### Ankerkuil + +De ankerkuilen zijn geïnstalleerd op een platbodemschip, 'De Harder' met registratienummer BOU25, eigendom van het visserijbedrijf Bout-Van Dijke. +De ankerkuil bestaat uit twee 8 meter brede stalen balken waarvan de onderste tot op de bodem wordt neergelaten en de bovenste tot net op of boven de waterlijn. +De uiteinden van de balken zijn verbonden met het scheepsanker waarmee het vaartuig voor anker ligt. +Tussen de balken is over de volledige breedte (8 m) een net of kuil met een maaswijdte van 20 mm gespannen. +Het doorstromende water houdt het net open. +De periode van het getij waarin gevist kan worden, is meestal van één uur na tot één uur voor de kentering van het getij, afhankelijk van de stroming die voldoende sterk moet zijn. +Op iedere locatie wordt één keer bij eb en één keer bij vloed gevist met één net aan bakboord en één net aan stuurboord. +De netten worden gelijktijdig aan stuurboord en bakboord neergelaten. +Het eerste net wordt meestal na een uur leeggemaakt en het tweede net na twee uur. +Zo kunnen twee vangsten per getijfase gemaakt worden en wordt het risico op misvangst beperkt. +De vangst wordt aan boord verwerkt. + +Eenmaal de vangst op het dek is gestort, halen we er onmiddellijk de minder algemene soorten en grote individuen uit. +Deze worden geïdentificeerd, geteld, gemeten en gewogen. +Van de zeer algemene soorten nemen we een deelmonster door 'voortgezette halvering', een gebruikelijk verdeelsysteem in de visserij. +Op die manier houden we een hanteerbaar, representatief aandeel over. +Vervolgens worden alle vissen in het deelstaal op soort geïdentificeerd, geteld, gemeten en gewogen. +Alle gevangen vissen worden na wegen en meten terug gezet in de Zeeschelde. + +Het bemonsterde watervolume wordt berekend met behulp van een mechanische stroomsnelheidsmeter met propeller die voor de duur van de vangst te water wordt gelaten. +De gemiddelde hoogte van de waterkolom, die met de duur van het getij verandert, wordt vermenigvuldigd met de kuilbreedte (8m) en de door de stroomsnelheidsmeter gepasseerde waterstroom. + +Aantallen en biomassa worden omgerekend naar aantallen en biomassa per m\textsuperscript{3} volume afgevist water. + +In de periode 2012-`r laatste_jaar` werd jaarlijks gevist in de lente (eind april of begin mei), de zomer (juli) en in het najaar (september). +In 2020 werd uitzonderlijk enkel in de zomer en het najaar gevist. +Er wordt telkens op vier locaties bemonsterd: Doel, Antwerpen, Steendorp en Branst (Figuur \@ref(fig:090-figuur-locaties-ankerkuil)). +Doel en Antwerpen bevinden zich in de EMSE niveau 3 scheldezone 'sterke saliniteitsgradiënt', Steendorp bevindt zich in de oligohaliene zone en Branst in de zoetwater zone met lange verblijftijd. +De Lambert coördinaten van de locaties zijn: Doel: 143350; 223091, Antwerpen: 149192; 210267, Steendorp: 142898; 200951 en Branst: 137181; 195683. + +```{r 090-figuur-locaties-ankerkuil, fig.cap=cap_locaties_ankerkuil, out.width="100%"} + +cap_locaties_ankerkuil <- + "De met ankerkuil bemonsterde locaties in het Zeeschelde estuarium sinds 2012." + +knitr::include_graphics(paste0(pad_figuren, "locaties_ankerkuil.jpg")) + +``` + +
+ +### Fuikvisserij + +Voor de fuikvangsten worden dubbele schietfuiken gebruikt. +Een schietfuik bestaat uit twee fuiken van 7,7 m lengte, waartussen een net van 11 m gespannen is. +Dat net is bovenaan voorzien van vlotters. +Onderaan bevindt zich een loodlijn. +Vissen die tegen het overlangse net zwemmen, worden naar één van de fuiken geleid. +De twee fuiken (type 120/90) zijn opgebouwd uit een reeks hoepels waarrond een net (maaswijdte 1 cm) bevestigd is. +Aan de ingang van de fuik staat de grootste hoepel (hoogte 90 cm). +Deze is onderaan afgeplat (120 cm breed) zodat de hele fuik recht blijft staan. +Naar achter toe worden de hoepels kleiner. +Aan het uiteinde is de maaswijdte 8 mm. +In de fuik bevinden zich een aantal trechtervormige netten waarvan het smalle uiteinde naar achter is bevestigd. +Eenmaal de vissen een trechter gepasseerd zijn, kunnen ze niet meer terug. +Om de vissen uit de fuik te halen wordt deze helemaal achteraan geopend en leeggemaakt. + +De bemonsterde locaties in de periode 2009-2022 zijn weergegeven in Figuur \@ref(fig:090-figuur-locaties-fuiken). +Vanaf het najaar van 2015 werd de locatie Zandvliet niet meer bemonsterd maar vervangen door het Paardenschor als nieuwe locatie in de zone sterke saliniteitsgradiënt (Figuur 2). +Bij de bespreking van de resultaten wordt Zandvliet niet expliciet vermeld maar wordt er verwezen naar Paardenschor. +De Lambert coördinaten van de locaties zijn: Zandvliet: 139864; 228413, Paardenschor: 142882; 225713, Antwerpen: 150050; 210800, Steendorp: 142520; 201050, Kastel: 137450; 193480, Appels: 128997; 193213 en Overbeke: 114823; 188235. + +Bij iedere campagne (voorjaar (mrt-apr), zomer (juni-augustus) en najaar (sept-okt)) werden per locatie twee dubbele schietfuiken geplaatst op de laagwaterlijn. +Tot en met 2021 stonden de fuiken 48 uur op locatie en werden ze om de 24 uur leeggemaakt. +De gevangen vissen worden ter plaatse geïdentificeerd, geteld, gemeten, gewogen en vervolgens teruggezet. +Het aantal individuen en de biomassa gevangen met fuiken worden omgerekend naar aantallen en biomassa per fuikdag. +Deze getransformeerde data worden gebruikt in de verdere analyse. +Om de totale visinspanning op de Zeeschelde te rationaliseren staan de fuiken sinds 2022 slechts 24 u op locatie en worden ze maar één keer leeggemaakt. +De gemiddelde aantallen en biomassa per fuikdag zullen hierdoor weinig veranderen maar de tweede fuikdag voegde in het verleden gemiddeld 2 extra soorten toe (berekening op basis van 144 campagnes). +Deze strategiewijziging zal dus een sprong in de tijdreeks voor soortenrijkdom veroorzaken. + +```{r 090-figuur-locaties-fuiken, fig.cap=cap_locaties_fuiken, out.width="100%"} + +cap_locaties_fuiken <- + "De met fuiken bemonsterde locaties in het regulier meetnet in het Zeeschelde estuarium sinds 2009." + +knitr::include_graphics(paste0(pad_figuren, "locaties_fuiken_historisch.jpg")) + +``` + +
+ +### EMSE evaluatie + +De resultaten van ankerkuil- en fuikvangsten worden gerapporteerd volgens EMSE (Evaluatie Methodiek Schelde Estuarium; EMSE 2021). +De waargenomen soorten worden onderverdeeld in zogenaamde functionele groepen op basis van estuarien habitatgebruik en dieetvoorkeur. + +De indeling qua habitatgebruik is als volgt: + +- Estuariene soorten en mariene migranten. Estuariene soorten brengen hun hele levenscyclus in het estuarium door. Mariene migranten (juvenielen, seizoensgasten, dwaalgasten) kunnen hun levenscyclus op zee vervolledigen maar ze komen de gunstiger condities in het estuarium opzoeken vb. om op te groeien. +- Diadrome soorten moeten zich tussen zoet- en zoutwater verplaatsen om zich voort te planten en zo hun levenscyclus te vervolledigen. +- Zoetwatersoorten die ook in het estuarium hun levenscyclus kunnen vervolledigen. + +De indeling qua dieetvoorkeur is als volgt: + +- Benthivoor +- Piscivoor +- Omnivoor +- Planktivoor + +De functionele groep omnivore estuariene soorten en mariene migranten is niet opgenomen in de EMSE indeling (zie EMSE 2021). +Omdat van deze groep, althans volgens de EMSE dieetvoorkeur per soort, toch redelijke aantallen voorkomen in de Zeeschelde wordt deze echter wel opgenomen in de MONEOS rapportage. +Sommige combinaties van habitatgebruik en dieetvoorkeur komen niet voor in de data. +Om een overzichtelijke vaste structuur te behouden worden ze wel telkens mee opgenomen in de figuren. + +Een overzicht van soorten die sinds 2012 in de Zeeschelde werden gevangen, met aanduiding van EMSE habitatgebruik en dieetvoorkeur wordt gegeven in Tabel \@ref(tab:093-tabel-zeeschelde-soorten) in bijlage. +Er werden in die periode `r aantal_soorten` soorten gevangen waarvan `r aantal_soorten_beide` soorten in zowel ankerkuil als fuiken, `r aantal_soorten_enkel_ankerkuil` soorten enkel met de ankerkuil en `r aantal_soorten_enkel_fuiken` soorten enkel met de dubbele schietfuiken. + +Voor elk van de EMSE functionele groepen worden per jaar en per vangstmethode het totaal aantal gevangen individuen en de totale biomassa per vangsteenheid (1000m³ bemonsterd water voor ankerkuil, 1 fuikdag voor fuikvangsten) alsook het aantal soorten en de Shannon diversiteit gerapporteerd. +Dit per scheldezone (EMSE niveau 3) en gemiddeld over de bemonsterde seizoenen (voorjaar, zomer, najaar). + +De Shannon diversiteit *D* wordt berekend als: + +$$ +D = exp \left( -\sum^S_i p_i ln (p_i) \right) +$$ + +waarbij *S* het aantal gevangen soorten in de functionele groep is en *p~i~* de relatieve abundantie van soort *i*. +*D* neemt een waarde aan tussen 1 en *S*, afhankelijk van de gelijkheid (evenness) in abundantie van de soorten. +Indien *D* = *S* hebben alle soorten in de groep een gelijke abundantie. + +Naast de algemene trends per functionele groep wordt er ook gekeken naar de trends van een aantal sleutelsoorten. +Deze soorten zijn zo geselecteerd dat ze een goede vertegenwoordiging geven van de verschillende saliniteits- en dieetvoorkeuren (zie bijlage Tabel \@ref(tab:093-tabel-zeeschelde-soorten)) en zijn belangrijke indicatoren voor het ecologisch functioneren van het systeem. +Daarnaast zijn ook de europees beschermde soorten opgenomen in de sleutelsoortenlijst. + +### Bepalen van de visindex + +De gegevens van de fuikvangsten in de Zeeschelde worden gebruikt om de visindex per KRW waterlichaam te berekenen volgens de zone-specifieke estuariene index voor biotische integriteit (Breine et al., 2010). +De Index wordt berekend op basis van de jaargegevens en is zodoende robuuster dan de brakwater index die gebaseerd is op dagvangsten (Breine et al., 2007). +De index score per waterlichaam integreert de beoordeling van een aantal metrieken, wordt vertaald naar een ecologische kwaliteitsratio (EQR) tussen 0 en 1 en ondergebracht in één van de ecologische kwaliteitsklassen, variërend van 'slecht' over 'onvoldoende', 'matig', 'goed ecologisch potentieel' (GEP) tot 'maximaal ecologisch potentieel' (MEP). +Elke gebruikte metriek staat voor een bepaalde functie van het ecosysteem voor de visgemeenschap. +De betekenis van de gebruikte metrieken is weergegeven in Tabel \@ref(tab:090-tabel-metrieken-visindex). +Voor elke metriek wordt een score bepaald in functie van een vastgelegde referentietoestand. +In elke saliniteitszone gelden andere metrieken en grenswaarden (Breine et al., 2010). + +```{r 090-tabel-metrieken-visindex} + +tabel_metrieken <- + read_excel(paste0(maak_pad(hoofdstuk, "tabellen"), "visindexreeks.xlsx"), + sheet = "toelichting metrieken", + col_names = FALSE) + +cap_metrieken <- + "Toelichting van de metrieken gebruikt in de visindex." + +tabel_metrieken %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_metrieken, + col.names = NULL, + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped")) + +``` + +
diff --git a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd new file mode 100644 index 0000000..eefdf74 --- /dev/null +++ b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd @@ -0,0 +1,620 @@ +```{r 091-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 091-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 091-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 091-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren/ankerkuil") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen/ankerkuil") + +``` + +```{r 091-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 091-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "ankerkuil_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +## Resultaten + +### Ankerkuil + + + +#### Soortenrijkdom in `r laatste_jaar` + +We vingen `r aantal_soorten_laatste_jaar` vissoorten in `r laatste_jaar`. +Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:091-tabel-overzicht-soorten). +In de zone met sterke saliniteitsgradiënt (Doel en Antwerpen) werden er meer soorten gevangen dan in de oligohaliene (Steendorp) en zoetwater (Branst) zone (Tabel \@ref(tab:091-tabel-aantal-soorten)). +Over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden er inderdaad systematisch meer soorten gevangen in deze zone dan in de oligohaliene en zoete zone (Figuur \@ref(fig:091-figuur-aantal-soorten-locatie-historisch)). +De turnover van soorten tussen seizoenen op elke locatie bedraagt tot een derde van de gevangen soorten. +Het totaal aantal soorten jaarlijks gevangen in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar`-`r laatste_jaar` varieert rond de 40, met een maximum (46) in 2017 en een minimum (36) in 2020. +De turnover in soorten tussen locaties bedraagt tot een kwart van het totaal aantal soorten. + +```{r 091-tabel-overzicht-soorten} + +tabel_gevangen_soorten <- + read_excel(paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx"), + sheet = "gevangen_soorten") %>% + arrange(soort) + +cap_gevangen_soorten <- + paste0("Overzicht van de vissoorten gevangen tijdens de ankerkuilcampagnes in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_gevangen_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_gevangen_soorten, + align = c("l", rep("c", 12)), + col.names = c("", rep(c("Doel", "Antw.", "Steend.", "Branst"), 3)), + escape = FALSE, + linesep = "") %>% + add_header_above(c(" " = 1, "voorjaar" = 4, "zomer" = 4, "najaar" = 4)) %>% + kable_styling("striped", + latex_options = c("striped", "scale_down"), + font_size = 15) + +``` + +
+ +```{r 091-tabel-aantal-soorten} + +tabel_aantal_soorten <- + read_excel(paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx"), + sheet = "aantal_soorten") + +cap_aantal_soorten <- + paste0("Aantal soorten gevangen tijdens de ankerkuilcampagnes in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_aantal_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_aantal_soorten, + align = c("l", rep("c", 3)), + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped"), + font_size = 10) + +``` + +
+ +```{r 091-figuur-aantal-soorten-locatie-historisch, fig.cap=cap_aantal_soorten_locatie, out.width="110%"} + +cap_aantal_soorten_locatie <- + str_c("Het aantal soorten gevangen per locatie in de Zeeschelde tijdens de ankerkuilcampagnes in de periode 2012-",laatste_jaar,". Het donkere deel per balk geeft het gemiddeld aantal soorten gevangen per jaar en locatie; het lichtere deel geeft het totaal aantal gevangen soorten per jaar en locatie.") + +knitr::include_graphics(paste0(pad_figuren, "aantal_soorten_locatie.jpg")) + +``` + +
+ +#### Relatieve soortensamenstelling voor de meest dominante soorten in `r laatste_jaar` + +We analyseren alle vangstgegevens van `r laatste_jaar`. +Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. +Juveniele haring en sprot werden samen geregistreerd als "haringachtigen" . +In de zomer was het overgrote deel van de haringachtigen haring, in het najaar werden in Doel een merendeel sprot gevangen. + +Uit deze analyse blijkt dat de relatieve abundantie van soorten zowel seizoenaal als ruimtelijk verschilt (Figuur \@ref(fig:091-figuur-relatief-aantal)). +In Doel en Antwerpen (zone met sterke saliniteitsgradiënt) zijn haringachtigen dominant in alle seizoenen van `r laatste_jaar`. +Ook in het voorjaar in Steendorp zijn haringachtigen dominant. +Spiering is nog minder omnipresent dan in 2022 en enkel dominant in Steendorp in de zomer. +In 2022 domineerden spieringen nog de vangstaantallen in drie afvissingen in Steendorp en Branst (zoetwater). +In het najaar neemt brakwatergrondel het over in Steendorp, vergelijkbaar met vorig jaar. +Brakwatergrondel is minder dominant aanwezig in vergelijking met 2022, vooral in Branst, waar bot in `r laatste_jaar` dominant aanwezig is in het voorjaar en dikkopje het overneemt in de zomer en het najaar. + +Uitgedrukt in biomassa worden gelijkaardige patronen geobserveerd voor haringachtigen in Doel en Antwerpen. +Spiering treedt meer op de voorgrond in Steendorp maar met toenemende aanwezigheid van brakwatergrondel en dikkopje in het najaar. +In Branst staat fint in voor een groot deel van de biomassa in het voorjaar, spiering in de zomer en dikkopje in het najaar (Figuur \@ref(fig:091-figuur-relatieve-biomassa)). +Ook snoekbaars is duidelijk aanwezig in de biomassa van voorjaar en zomer in Steendorp en Branst. + +```{r 091-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} + +cap_relatief_aantal <- + str_c("Het relatief aantal gevangen individuen in de Zeeschelde tijdens de ankerkuilcampagnes in het voorjaar, de zomer en het najaar van ",laatste_jaar,". De getallen geven de percentages van het aantal gevangen vissen weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + +
+ +```{r 091-figuur-relatieve-biomassa, fig.cap=cap_relatieve_biomassa, out.width="100%"} + +cap_relatieve_biomassa <- + str_c("De relatieve biomassa van de vangsten in de Zeeschelde tijdens de ankerkuilcampagnes in het voorjaar, de zomer en het najaar van ",laatste_jaar,". De getallen geven de percentages van de totale biomassa weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + +
+ +#### Densiteit, biomassa en diversiteit binnen EMSE + +##### Algemene trends per saliniteits- en dieetvoorkeur + +In de hieronder volgende figuren voor aantallen en biomassa worden de bijdragen van de meest abundante soorten per functionele groep met individuele kleurcodes weergegeven. +Soorten die binnen een functionele groep minder dan 10% van zowel de aantallen als de biomassa uitmaken worden telkens samengenomen als 'rest'. + +***Estuariene soorten en mariene migranten*** + +Figuur \@ref(fig:091-figuur-aantallen-marien-EMSE) geeft per saliniteitszone (EMSE niveau 3) en dieetvoorkeur de aantallen weer voor de gevangen estuariene soorten en mariene migranten. + +Benthivore soorten overheersen naar aantal en biomassa, vooral in de zoete zone. +In de zone met sterke saliniteitsgradiënt overheersen planktivoren in `r laatste_jaar`. + +Dikkopje en brakwatergrondel zijn veruit de meest talrijke benthivore soorten in deze groep. +De grootste aantallen vonden we in de zoetwaterzone in Branst (samen 600 individuen per 1000m³, sterk aanleunend bij de piek in 2018). +Enkel in 2020 waren ze meest talrijk in het oligohalien. + +Omnivore mariene en estuariene soorten worden qua aantallen in het verleden gedomineerd door kleine zeenaald in de zone met sterke saliniteitsgradiënt, maar in `r laatste_jaar` domineert steenbolk. +In het oligohalien en zoetwater komt hoofdzakelijk juveniele zeebaars voor die daar komt opgroeien. +De aantallen zijn beduidend lager dan voor de benthivore soorten van deze groep (\< 5 individuen per 1000m³). +De laatste jaren wordt deze soortengroep minder gevangen dan in de periode voor 2018. + +Piscivore estuariene en mariene soorten volgens de EMSE indeling komen in de Zeeschelde niet voor, de éénmalige vangst van een smelt uitgezonderd. +In realiteit gedragen ook zeebaars, steenbolk en zeeforel zich hoofdzakelijk piscivoor in de Zeeschelde. + +Planktivore individuen van de groep estuarien residente en mariene migranten zijn meest talrijk in de zone met sterke saliniteitsgradiënt, met een uitschieter tot meer dan 200 individuen per 1000m³ in 2022, maar ze zijn toch ook tot in de zoete zone terug te vinden. +Het gaat hier vooral om juveniele haring en sprot, mariene soorten die de luwte en voedselrijkdom van het estuarium opzoeken om op te groeien. + +De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:091-figuur-biomassa-marien-EMSE)). +De omnivore mariene en estuariene soorten vertonen echter wel een grotere soortendiversiteit qua biomassa dan qua aantallen in de zone met sterke saliniteitsgradiënt. +De dominatie van zeenaald in bepaalde jaren is een stuk minder uitgesproken in de biomassa dan in de aantallen. + +De sterke dominantie van één of twee soorten qua aantallen binnen elke soortgroep is ook duidelijk zichtbaar in Figuur \@ref(fig:091-figuur-diversiteit-marien-EMSE). +Zelfs als er in totaal (S) 5 of meer soorten voorkomen in een groep wordt deze meestal door slechts één of twee soorten gedomineerd (D). +Enkel voor de omnivore mariene en estuariene soorten kan de diversiteit oplopen tot 4-6. +Soortenaantal en diversiteit vertonen geen uitgesproken trends binnen de soortgroepen, maar zijn relatief stabiel. + +```{r 091-figuur-aantallen-marien-EMSE, fig.cap=aantallen_marien_EMSE, out.width="110%"} + +aantallen_marien_EMSE <- + str_c("Totaal aantal gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-marien-EMSE, fig.cap=biomassa_marien_EMSE, out.width="110%"} + +biomassa_marien_EMSE <- + str_c("Totale biomassa gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-marien-EMSE, fig.cap=diversiteit_marien_EMSE, out.width="100%"} + +diversiteit_marien_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +Volgens de EMSE indeling zijn er geen diadrome benthivore en planktivore vissoorten in de Zeeschelde. +De twee zogenaamd piscivore soorten, de zeeprik en de rivierprik zijn eigenlijk parasitaire soorten waarvan er telkens maar enkele, grote, exemplaren gevangen worden. +Aantallen, biomassa en dominantie zijn dus sterk variabel in de tijd en per saliniteitszone voor deze functionele groep. + +De diadrome soorten in de Zeeschelde zijn dus voornamelijk omnivoor en deze functionele groep is zo sterk gedomineerd door spiering (Figuur \@ref(fig:091-figuur-aantallen-diadroom-EMSE)) dat bot, driedoornige stekelbaars, fint en paling, die nochtans ook zeer regelmatig gevangen worden, niet zichtbaar zijn op de figuur of zelfs niet eens apart vermeld worden maar samen met nog enkele andere, minder algemene soorten, onder 'rest' verwerkt worden. + +Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 4000-6000 individuen per 1000m³ in 2014. +In recente jaren zijn de aantallen een stuk lager (50-600 individuen per 1000m³). +Met uitzondering van een dip rond 2016 was de biomassa (Figuur \@ref(fig:091-figuur-biomassa-diadroom-EMSE)) aan spiering in voorgaande jaren relatief stabiel. +In 2022 en `r laatste_jaar` zijn de aantallen en biomassa aan gevangen spiering echter opvallend lager, vooral in de zoetwater zone. +Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. +Deze soort plant zich inderdaad voort stroomopwaarts in de zoete zone met korte verblijftijd, groeit op in het estuarium en trekt na enkele jaren naar zee. +Om het rekruteringssucces te bepalen moet echter de grootteklasse verdeling per seizoen en per locatie geanalyseerd worden. +Deze data zijn voorhanden maar worden niet gebruikt in EMSE. + +De diversiteit voor diadrome functionele groepen is zeer laag. +Hoewel er tot 8 omnivore soorten samen kunnen voorkomen blijft de spiering dominant over alles heen (Figuur \@ref(fig:091-figuur-diversiteit-diadroom-EMSE)). +In 2022 en `r laatste_jaar` lijkt die dominantie echter af te nemen in de zoete zone met een stijging van de diversiteit van 1 naar 2. + +```{r 091-figuur-aantallen-diadroom-EMSE, fig.cap=aantallen_diadroom_EMSE, out.width="110%"} + +aantallen_diadroom_EMSE <- + str_c("Totaal aantal gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-diadroom-EMSE, fig.cap=biomassa_diadroom_EMSE, out.width="110%"} + +biomassa_diadroom_EMSE <- + str_c("Totale biomassa gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-diadroom-EMSE, fig.cap=diversiteit_diadroom_EMSE, out.width="100%"} + +diversiteit_diadroom_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +Zoetwater soorten zijn meest talrijk in de zoetwaterzone waar de aantallen en biomassa vanaf 2016 algemeen toenemen (Figuur \@ref(fig:091-figuur-aantallen-zoetwater-EMSE), Figuur \@ref(fig:091-figuur-biomassa-zoetwater-EMSE)). + +Binnen de zoetwatersoorten zijn omnivoren de meest talrijke en de meest soortenrijke functionele groep en ze vertegenwoordigen ook de grootste biomassa. +Snoekbaars is dominant in deze groep, zowel in aantallen als in biomassa. +De aantallen daalden voor het tweede jaar op rij, maar de biomassa bleef de laatste jaren grotendeels constant, er werden dus relatief meer grotere exemplaren gevangen. + +Benthivore zoetwater soorten worden qua aantallen gedomineerd door brasem, tiendoornige stekelbaars en blauwbandgrondel. +Qua gewicht is enkel brasem dominant in deze functionele groep. +Brasem zet in `r laatste_jaar` de toename in aantallen, die begon in 2022, verder. + +Baars en de exotische zonnebaars zijn de enige piscivore zoetwatersoorten voor de Zeeschelde. +Baars is de dominante soort naar aantallen en gewicht. +Na een uitschieter in 2021 zijn aantal en gewicht in `r laatste_jaar` weer gedaald en op het niveau van voor 2021. + +Planktivore zoetwatersoorten komen in de Zeeschelde niet voor. + +Zoals voor de mariene, estuariene en diadrome soorten worden ook de zoetwater soortengroepen grotendeels gedomineerd door één à twee soorten (D), hoewel vaak meer soorten gevangen worden (S) (Figuur \@ref(fig:091-figuur-diversiteit-zoetwater-EMSE)). + +```{r 091-figuur-aantallen-zoetwater-EMSE, fig.cap=aantallen_zoetwater_EMSE, out.width="110%"} + +aantallen_zoetwater_EMSE <- + str_c("Totaal aantal gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen op basis van ankerkuildata.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-zoetwater-EMSE, fig.cap=biomassa_zoetwater_EMSE, out.width="110%"} + +biomassa_zoetwater_EMSE <- + str_c("Totale biomassa gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-zoetwater-EMSE, fig.cap=diversiteit_zoetwater_EMSE, out.width="100%"} + +diversiteit_zoetwater_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg")) + +``` + +
+ +#### Trends in sleutelsoorten + +Een aantal soorten beschouwen we als sleutelsoorten in de Zeeschelde omdat ze informatie geven over één of meerdere ecologische functies van het estuarium of omdat ze Europees beschermd zijn. +De diadrome sleutelsoorten zijn: fint, spiering, bot, paling en rivierprik. +Ze geven informatie over het gebruik van het estuarium als migratiekanaal. +Fint- en spieringvangsten geven daarenboven informatie over het gebruik van het estuarium als paaihabitat. +Mariene sleutelsoorten zijn haring, zeebaars, tong en ansjovis. +Hun aanwezigheid toont aan dat het estuarium als opgroei- en foerageergebied wordt gebruikt. + + +Van de 25 sleutelsoorten uit de lijst (EMSE 2021) worden er 22 waargenomen in de Zeeschelde aan de hand van ankerkuil bevissingen: 8 mariene en estuariene soorten, 6 diadrome soorten en 8 zoetwater soorten. +Slechts een aantal soorten komen echter in relatief hoge aantallen voor. + + + +***Estuariene soorten en mariene migranten*** + +Van de estuariene en mariene sleutelsoorten komen brakwatergrondel, dikkopje, haring en zeebaars vrij frequent voor (\> 1 individu per 1000m³, Figuur \@ref(fig:091-figuur-mariene-sleutelsoorten)). +De overige soorten komen slechts in zeer kleine aantallen voor. +Sprot wordt eveneens in vrij grote aantallen gevangen maar werd niet als sleutelsoort aangeduid. + +- Brakwatergrondel komt in de grootste aantallen voor in het zoetwater en vertoont piekdensiteiten rond 2018. + In `r laatste_jaar` zijn de aantallen waargenomen in de ankerkuil vangsten gemiddeld. + +- Dikkopje bereikt in `r laatste_jaar` recordaantallen met \>300 individuen per 1000m³ in zoetwater. + Vorige pieken rond 50 individuen per 1000m³ in 2018 en 2020 zijn waargenomen in oligohalien. + +- Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. + De aantallen zijn relatief stabiel en tonen op eerste zicht een golvende beweging, met piekdensiteiten in 2014, 2018 en 2022. + +- Zeebaars wordt vooral waargenomen in de zoetwater zone en in het oligohalien. + In vergelijking met de periode 2012-2017 komt er nu weinig zeebaars voor in de Zeeschelde. + +```{r 091-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} + +cap_aantal_sleutelsoorten_marien <- + str_c("Aantallen van sleutelsoorten binnen estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +De meest voorkomende diadrome sleutelsoorten (\> 1 individu per 1000m³) zijn bot, fint en vooral spiering (Figuur \@ref(fig:091-figuur-diadrome-sleutelsoorten)). +Paling wordt slechts in kleine aantallen gevangen met de ankerkuil, maar is qua biomassa toch vrij belangrijk. + + + +- Bot komt voor in alle drie de scheldezones waar afvissingen met ankerkuil worden gedaan, maar met over het algemeen de hoogste aantallen in het zoetwater. + Aantallen bot varieren van jaar tot jaar, met in `r laatste_jaar` de hoogste aantallen tot nu toe. + +- Fint aantallen vertoonden pieken in 2012, 2015 en 2017. + Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:091-figuur-relatief-aantal)). + Sterke variatie in de aantallen kan zowel aan de paaitrek als aan het rekruteringssucces te wijten zijn. + Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. + +- Paling wordt vooral gevangen in het oligohalien en zoetwater. + De aantallen vertonen een licht dalende trend die lijkt gestabiliseerd in `r laatste_jaar`. + Deze trend is minder duidelijk in de biomassa die vrij sterk varieert van jaar tot jaar. + +- Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:091-figuur-relatief-aantal), \@ref(fig:091-figuur-relatieve-biomassa), \@ref(fig:091-figuur-aantallen-diadroom-EMSE) en \@ref(fig:091-figuur-biomassa-diadroom-EMSE)). + Deze soort vertoonde een heel sterke piek in aantallen in 2014. + In `r laatste_jaar` werden lage aantallen en biomassa gevangen, een verderzetting van het geobserveerde dieptepunt in 2022. + +```{r 091-figuur-diadrome-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_diadroom, out.width="100%"} + +cap_aantal_sleutelsoorten_diadroom <- + str_c("Aantallen van diadrome sleutelsoorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +De meest voorkomende sleutelsoorten voor de zoetwatersoorten zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:091-figuur-zoetwater-sleutelsoorten)). + +- Na de forse toename van blankvoorn in het zoetwater in 2021 vertoont deze soort in `r laatste_jaar` opnieuw lagere aantallen. + + +- Brasem vertoont een duidelijke toename in aantallen in het zoetwater vanaf 2016 in vergelijking met de jaren ervoor. + In 2022 en `r laatste_jaar` is er nog een extra toename in het zoetwater. + +- Ook snoekbaars vertoont een duidelijke toename in aantallen vanaf 2016 met een piek in 2021 waarna de aantallen terug afnemen. + Deze soort komt niet alleen voor in het zoetwater maar ook vaak in het oligohalien (waar de aantallen sinds 2021 ook terug afnemen) en zelfs in de zone met sterke saliniteitsgradiënt. + +```{r 091-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} + +cap_aantal_sleutelsoorten_zoetwater <- + str_c("Aantallen van zoetwater sleutelsoorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg")) + +``` + +
+ +#### Alternatieve evaluatie per estuarien habitatgebruik of dieet + +Het gildenconcept wordt normaal gezien gebruikt om een bepaald kenmerk van visgemeenschappen te onderzoeken. +De voorkomende soorten worden dan gegroepeerd op basis van dat bepaald kenmerk. +In de EMSE methodiek worden twee van deze kenmerken gebruikt, het gebruik van estuariene habitats en het dieet. +Er werd beslist om deze te 'nesten' waardoor er 12 functionele groepen gevormd werden. + +Alternatief kunnen we ook het gildenconcept toepassen zoals gebruikelijk en enerzijds het estuarien habitat gebruik door de visgemeenschap evalueren en anderzijds visgemeenschap positioneren in het estuariene voedselweb. +Op die manier wordt ook de volledige visgemeenschap in één overzicht beoordeeld. + +Zo zien we in één oogopslag dat er met de ankerkuil meest vissen per m³ gevangen worden in de zoete zone en het minst in de zone met sterke saliniteitsgradiënt. +Dit geldt zowel voor aantallen als voor biomassa. +Men zou dus kunnen besluiten dat de densiteit van de vispopulaties in de Zeeschelde aanwezig in het pelagiaal stijgt in stroomopwaartse richting als we abstractie maken van de verschillen in morfodynamische habitateigenschappen op de verschillende visplaatsten. + +##### Estuarien habitat gebruik + +De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien habitat gebruik worden weergegeven in respectivelijk Figuur \@ref(fig:091-figuur-aantallen-habitat), Figuur \@ref(fig:091-figuur-biomassa-habitat) en Figuur \@ref(fig:091-figuur-diversiteit-habitat). + +Voor alle drie de estuariene habitat gebruik groepen zien we de laagste densiteiten in de zone met sterke saliniteitsgradiënt. +Diadrome vissen overheersen de aantallen in de ankerkuilvangsten, met vergelijkbare aantallen per m³ in de oligohaliene en zoete zone. +Die dominantie is echter hoofdzakelijk te wijten aan de grote aantallen en biomassa van spiering in voorgaande jaren. +De laatste twee jaar zijn de aantallen en biomassa een stuk lager en kunnen mariene en estuariene soorten zelfs domineren, waar die in het verleden met bijna een factor 10 minder gevist werden. + Zoetwatersoorten worden tenslotte in veel lagere aantallen gevangen, weliswaar met duidelijke toename van aantallen in stroomopwaartse richting. +Op basis van gemiddelde biomassa per m³ zijn de trends vergelijkbaar maar zijn de verschillen tussen estuariene habitat gebruik groepen veel kleiner. +Het gaat dus voornamelijk om kleine, juveniele diadrome individuen en grotere, adulte zoetwatervissen. +De estuarien residente soorten zijn middelgroot en alle leeftijdsklassen zijn aanwezig. + +Spieringen zijn zonder meer de dominante trekvissen, zowel naar aantal als naar biomassa en dat geldt in alle saliniteitszones van de Zeeschelde . +De aantallen spiering zijn al een aantal jaren veel kleiner dan voorheen, in 2022 en `r laatste_jaar` echter zijn niet alleen de aantallen maar ook de biomassa's uitzonderlijk laag. +Dit vergt nader onderzoek. + +Snoekbaars is de dominante zoetwatersoort, eveneens in aantal en biomassa. +De dominantie is echter minder uitgesproken dan die van de spiering, o.a. +ook omdat het aantal algemene soorten het grootst is in deze groep. + +Het beeld van mariene en estuariene soorten is iets complexer omdat hier in realiteit twee verschillende estuarien habitat gebruik gilden samengevoegd worden: estuarien residenten en mariene migranten die elk op een heel andere manier gebruik maken van het estuarien habitat. +In de zoete zone met lange verblijftijd en in het oligohalien zijn brakwatergrondel en dikkopje, twee estuarien residente soorten, de meest talrijke soorten van deze gildengroep. +Afgezien van de uitzonderlijke piek in `r laatste_jaar` voor dikkopje en in 2018 voor brakwatergrondel schommelen de aantallen en biomassa's zonder uitgesproken trend te vertonen. + +In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk. +Indien we naar de biomassa kijken winnen sprot en ook haring in 2022 en `r laatste_jaar` aan belang in de twee stroomafwaartse zones en zelfs in de zoete zone met lange verblijftijd. +Mariene migranten zoeken de beschutting en voedselrijkdom van het estuarium op tot in de zoetwater zone. +De aantallen en biomassa's variëren sterk van jaar tot jaar. + +De grootste soortenrijkdom vinden we bij de mariene en estuariene soorten in de zone met sterke saliniteitsgradiënt. +De voornaamste oorzaak hiervan is dat er af toe vangsten zijn van mariene dwaalgasten. +Deze hebben weinig betekenis voor het estuarien functioneren, buiten de indicatie dat ze kunnen overleven in die omgeving. +De laagste soortenrijkdom vinden we ook bij de mariene en estuariene soorten in de zoetwater zone. +De diversiteit is het grootst bij de mariene en estuariene soorten en zoetwatersoorten. + +
+ +```{r 091-figuur-aantallen-habitat, fig.cap=aantallen_habitat, out.width="110%"} + +aantallen_habitat <- + str_c("Totaal aantal gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-habitat, fig.cap=biomassa_habitat, out.width="110%"} + +biomassa_habitat <- + str_c("Totale biomassa gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-habitat, fig.cap=diversiteit_habitat, out.width="100%"} + +diversiteit_habitat <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg")) + +``` + +
+ +##### Dieet + +De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weergegeven in respectievelijk Figuur \@ref(fig:091-figuur-aantallen-dieet), Figuur \@ref(fig:091-figuur-biomassa-dieet) en Figuur \@ref(fig:091-figuur-diversiteit-dieet). + +Qua trofische samenstelling overheersten in het verleden omnivoren de aantallen en ook de biomassa door toedoen van spiering, gevolgd door benthivoren, planktivoren en tenslotte een zeer kleine minderheid aan piscivoren. +zoals reeds vermeld is de dominantie van omnivoren (spiering) de laatste twee jaar echter grotendeels verdwenen. + +Brakwatergrondel en dikkopje en in mindere mate brasem zijn de dominante benthivoren zowel in de aantallen als in de biomassa. +De gevangen hoeveelheden en de dominantie van brakwatergrondel en dikkopje stijgen beiden in stroomopwaartse richting in de vorige jaren. +In `r laatste_jaar` is dikkopje voor de eerste keer dominant in aantallen en biomassa over brakwatergrondel in zoetwater. + +Spiering is de dominante omnivoor met veel hogere aantallen en biomassa dan snoekbaars en andere omnivoren. +Dit moet echter genuanceerd worden. +De overgrote meerderheid zijn planktivore juveniele spieringen. +In het pelagiaal van de oligohaliene en zoete zeeschelde vinden we dus voornamelijk planktivore individuen. + +In de zone met sterke saliniteitsgradiënt zijn haring en sprot de belangrijkste planktivoren, met een zeer opvallende piek in 2022. +Ook in het oligohalien zijn ze nog redelijk talrijk aanwezig. + +Baars, rivierprik en zeeprik zijn de belangrijkste piscivoren. +In aantallen overheerst baars, met een opvallende piek in Branst (zoet lang) in 2021. +Pieken in de biomassa worden eerder veroorzaakt door occasionele vangsten van prikken, die gemiddeld veel groter zijn. +Ook piscivorie in de waterkolom van de Zeeschelde is onderschat doordat de EMSE indeling in dieetgroepen geen rekening houdt met de dieetshift van dominante soorten. +Een groot aandeel van 'omnivore' biomassa betreft ook volwassen spieringen en snoekbaars, die zich in de Schelde voornamelijk piscivoor gedragen (eigen observatie). +Ook volwassen fint, winde, meerval, zeebaars, steenbolk en zeeforel zijn als piscivoor gekend. + +Omnivoren vormen de meest soortenrijke trofische groep, gevolgd door benthivoren, planktivoren en tenslotte piscivoren. +Door de dominantie van enkele soorten in elke groep is de diversiteit algemeen laag in alle groepen en scheldezones. + +
+ +```{r 091-figuur-aantallen-dieet, fig.cap=aantallen_dieet, out.width="110%"} + +aantallen_dieet <- + str_c("Totaal aantal gevangen individuen per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-dieet, fig.cap=biomassa_dieet, out.width="110%"} + +biomassa_dieet <- + str_c("Totale biomassa gevangen individuen per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-dieet, fig.cap=diversiteit_dieet, out.width="100%"} + +diversiteit_dieet <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg")) + +``` + +
diff --git a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd new file mode 100644 index 0000000..ef8e346 --- /dev/null +++ b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -0,0 +1,689 @@ +```{r 092-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 092-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 092-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 092-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren/fuiken") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen/fuiken") + +``` + +```{r 092-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 092-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "fuiken_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +### Fuiken + +#### Soortenrijkdom in `r laatste_jaar` + +In `r laatste_jaar` werden `r aantal_soorten_laatste_jaar` vissoorten gevangen in de fuiken. +Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:092-tabel-overzicht-soorten). +Opmerkelijk weinig soorten zijn gevangen in Antwerpen in `r laatste_jaar` (Tabel \@ref(tab:092-tabel-aantal-soorten); Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). +In vergelijking met de ankerkuil werden in elke zone minder soorten bovengehaald met de fuiken. +Over de seizoenen werden met de fuiken het grootste aantal soorten gevangen in de zomer en het najaar terwijl dat met de ankerkuil in het voorjaar en de zomer was. + +Totaal over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden meest soorten gevangen in de zone met sterke saliniteitsgradiënt (Zandvliet/Paardenschor \> Antwerpen) (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)) en daalt de soortenrijkdom in stroomopwaartse richting, met iets minder soorten in de oligohaliene zone (Steendorp), en het laagst aantal soorten in de zoetwaterzone met lange (Kastel) en korte (Appels, Overbeke) verblijftijd. +Vanaf 2017 worden in de zone met sterke saliniteitsgradiënt wel minder soorten gevangen. + + +De soortensamenstelling op elke locatie kan sterk verschillen tussen de seizoenen, met een turnover van ongeveer één derde van de soorten. +Het totaal aantal soorten jaarlijks gevangen met fuiken in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar` - `r laatste_jaar` varieert rond de 33 (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). +Tot een kwart van het aantal gevangen soorten kan verschillen tussen de locaties. +Het aantal gevangen soorten per jaar vertoont meer variatie vanaf 2016. +In 2022 zijn er met de fuiken beduidend minder soorten gevangen dan de jaren voorheen. Dit heeft waarschijnlijk te maken met de halvering van het aantal fuikdagen per campagne van 2 naar 1 etmaal per locatie. +Uit vergelijking tussen vangsten na eerste en tweede etmaal in 144 campagnes blijkt dat een tweede vangst 0 tot 6 extra soorten oplevert met een gemiddelde van 2 soorten. + +```{r 092-tabel-overzicht-soorten} + +tabel_gevangen_soorten <- + read_excel(paste0(pad_tabellen, "tabellen_vissen.xlsx"), + sheet = "gevangen_soorten") %>% + arrange(soort) + +cap_gevangen_soorten <- + paste0("Overzicht van de vissoorten gevangen met fuiken in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_gevangen_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_gevangen_soorten, + align = c("l", rep("c", 12)), + col.names = c("", rep(c("Paard.", "Antw.", "Steend.", "Kastel", "Appels", "Overb."), 3)), + escape = FALSE, + linesep = "") %>% + add_header_above(c(" " = 1, "voorjaar" = 6, "zomer" = 6, "najaar" = 6)) %>% + kable_styling("striped", + latex_options = c("striped", "scale_down"), + font_size = 15) + +``` + +
+ +```{r 092-tabel-aantal-soorten} + +tabel_aantal_soorten <- + read_excel(paste0(pad_tabellen, "tabellen_vissen.xlsx"), + sheet = "aantal_soorten") + +cap_aantal_soorten <- + paste0("Aantal soorten gevangen met fuiken in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_aantal_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_aantal_soorten, + align = c("l", rep("c", 3)), + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped"), + font_size = 10) + +``` + +
+ +```{r 092-figuur-aantal-soorten-locatie-historisch, fig.cap=cap_aantal_soorten_locatie, out.width="110%"} + +cap_aantal_soorten_locatie <- + str_c("Het aantal soorten gevangen per locatie met fuiken in de Zeeschelde in de periode 2009-",laatste_jaar,". Het donkere deel per balk geeft het gemiddeld aantal soorten gevangen per jaar en locatie; het lichtere deel geeft het totaal aantal gevangen soorten per jaar en locatie.") + +knitr::include_graphics(paste0(pad_figuren, "aantal_soorten_locatie.jpg")) + +``` + +
+ +#### Relatieve soortensamenstelling voor de meest dominante soorten in `r laatste_jaar` + +Alle vangstgegevens van `r laatste_jaar` worden geanalyseerd. +Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. + +Deze analyse geeft aan dat de relatieve abundantie van de soorten zowel ruimtelijk als per seizoen verschilt (Figuur \@ref(fig:092-figuur-relatief-aantal)). +Het patroon verschilt ook sterk van dat van de ankerkuilvangsten en geeft algemeen een meer divers beeld met minder uitgesproken dominantie van een aantal soorten. + +In het voorjaar van `r laatste_jaar` overheersen zeebaars en bot de aantallen aan het Paardenschor. +In Antwerpen zijn dat vooral brakwatergrondel, blankvoorn en brasem. +In Steendorp wordt er naast blankvoorn ook relatief veel schol gevangen. +In de zoete zone overheersen brakwatergrondel, brasem, schol, baars en paling. +In de zomer worden overal redelijke aantallen bot en snoekbaars gevangen. +In de zone met sterke saliniteitsgradiënt aangevuld met haring, schol en steenbolk. +In de zoete zone is paling en blankvoorn meestal ook duidelijk aanwezig. +Dit beeld verandert compleet in het najaar. +In die periode overheerst brakwatergrondel de fuikvangsten van Antwerpen tot Appels. +In het Paardenschor is dit bot en in Overbeke is paling dominant. + +Uitgedrukt in biomassa overheerst snoekbaars, brasem en paling de zoete zone in het voorjaar, in de zone sterke saliniteitsgradiënt zijn dat ook snoekbaars, zeebaars, baars en bot. +In Kastel nemen ook optrekkende finten een belangrijk deel van de biomassa in. +Paling is op de meeste locaties dominant in de zomer, aangevuld met snoekbaars van Antwerpen tot Overbeke, met goede aanwezigheid van steenbolk in Paardeschor en karper in Overbeke (Figuur \@ref(fig:092-figuur-relatieve-biomassa)). +In het najaar blijft paling dominant op de meeste plaatsen behalve in Paardeschor en Kastel waar respectievelijk bot en snoekbaars dominant zijn. + +```{r 092-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} + +cap_relatief_aantal <- + str_c("Het relatief aantal individuen per soort en per seizoen gevangen met fuiken in de Zeeschelde in ",laatste_jaar,". De getallen geven de percentages van het aantal gevangen vissen weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + +
+ +```{r 092-figuur-relatieve-biomassa, fig.cap=cap_relatieve_biomassa, out.width="100%"} + +cap_relatieve_biomassa <- + str_c("De relatieve biomassa per soort en per seizoen gevangen met fuiken in de Zeeschelde in ",laatste_jaar,". De getallen geven de percentages van de totale biomassa weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + +
+ +#### Densiteit, biomassa en diversiteit binnen EMSE + +##### Algemene trends per saliniteits- en dieetvoorkeur + +In de hieronder volgende figuren voor aantallen en biomassa worden de bijdragen van de meest abundante soorten per functionele groep met individuele kleurcodes weergegeven. +Soorten die binnen een functionele groep minder dan 10% van zowel de aantallen als de biomassa uitmaken worden telkens samengenomen als 'rest'. + +***Estuariene soorten en mariene migranten*** + +Figuur \@ref(fig:092-figuur-aantallen-marien-EMSE) en Figuur \@ref(fig:092-figuur-biomassa-marien-EMSE) geven per saliniteitszone (EMSE niveau 3) en dieetvoorkeur respectievelijk de aantallen en biomassa weer voor de gevangen estuariene soorten en mariene migranten. + +In deze estuariene gebruik groep overwegen benthivoren in aantal en biomassa. +Eerst vooral in de zone met sterke saliniteitsgradiënt maar de laatste jaren ook in de zoete zones. +Omnivoren volgen in aantallen en biomassa en daarna planktivoren. +Piscivore estuariene en mariene soorten volgens de EMSE indeling worden in de Zeeschelde niet gevangen met fuiken. + +In de zone met sterke saliniteitsgradiënt worden vooral tong en schol gevangen als benthivore mariene migranten. +Het aantal tongen per fuikdag daalde sterk na 2011 en toonde nog een beperkte piek in 2017. +Goede aantallen schol werden gevangen in 2023. +Brakwatergrondel en dikkopje zijn veruit de meest talrijke benthivore estuariene soorten in de oligohaliene en zoete zones. +De laaste jaren wordt hier vooral brakwatergrondel gevangen. +De aantallen per fuikdag schommelen sterk zonder bepaalde trend. +In `r laatste_jaar` is er een piek in het oligohalien en zoet met lange verblijftijd. + +Omnivore mariene soorten worden qua aantallen en biomassa standaard gedomineerd door zeebaars, in `r laatste_jaar` blijft zeebaars aanwezig in vergelijkbare aantallen en biomassa, maar is er een piek van steenbolk. +Grote aantallen juveniele steenbolk werden gevangen in 2023. +Vooral in de zone met sterke saliniteitsgradiënt is zeebaars opvallend aanwezig in de fuikvangsten sinds 2015, terwijl ze in deze zone relatief minder gevangen worden met de ankerkuil. + +Planktivore individuen van de groep estuarien residente en mariene migranten zijn vooral juvenielen van mariene soorten haring en sprot, die de luwte van het estuarium opzoeken om op te groeien. +Ze zijn meest talrijk in de zone met sterke saliniteitsgradiënt maar ze zijn toch ook tot in de zoete zone terug te vinden. +Daar waar de piek in de ankerkuil aantallen zich in 2022 voordeed was dat in 2021 voor de fuikvangsten. + +De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:092-figuur-biomassa-marien-EMSE)). + +Soortenrijkdom aan estuariene residenten en mariene migranten is laag, met slechts één of twee soorten per voedselgroep en saliniteitszone (Figuur \@ref(fig:092-figuur-diversiteit-marien-EMSE)). +Uitzondering hierop zijn de zone met sterke saliniteitsgradiënt voor benthivoren en omnivoren. +Maar zelfs als er in totaal (S) 5 of meer soorten voorkomen in een functionele groep, wordt die gedomineerd door slechts één of twee soorten (D). +Uitzonderlijk komt in de zone met sterke saliniteitsgradiënt een diversiteit (D) hoger dan 2 voor. +Soortenaantal en diversiteit vertonen geen uitgesproken trends binnen de soortgroepen, maar zijn relatief stabiel. + +```{r 092-figuur-aantallen-marien-EMSE, fig.cap=aantallen_marien_EMSE, out.width="110%"} + +aantallen_marien_EMSE <- + str_c("Totaal aantal gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-marien-EMSE, fig.cap=biomassa_marien_EMSE, out.width="110%"} + +biomassa_marien_EMSE <- + str_c("Totale biomassa gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-marien-EMSE, fig.cap=diversiteit_marien_EMSE, out.width="100%"} + +diversiteit_marien_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +Er zijn geen diadrome benthivore en planktivore vissoorten in de Zeeschelde. +De twee zogenaamd piscivore soorten, de zeeprik en de rivierprik zijn eigenlijk parasitaire soorten waarvan slechts sporadisch een enkel groter exemplaar met de fuik gevangen wordt. +De enige dieetgroep van tel onder de diadromen zijn de omnivore soorten. +In de fuikvangsten zijn de jonge spieringen, hoewel talrijk, minder dominant aanwezig dan in de ankerkuil. +Ook bot, driedoornige stelkelbaars, dunlipharder, fint en paling laten zich opmerken in de aantallen en/of biomassa (Figuur \@ref(fig:092-figuur-aantallen-diadroom-EMSE); Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). +In de zone met sterke saliniteitsgradiënt is bot de meest dominante diadrome soort qua aantallen. + +In de zone met sterke saliniteitsgradiënt wordt bot in de grootste aantallen gevangen. +Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 400-600 individuen per fuikdag in 2015 in Overbeke. +In recente jaren zijn de aantallen, net als in de ankerkuildata een stuk lager (\<50 individuen per fuikdag). +Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet ook op basis van fuikdata vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. +De biomassa van omnivore diadromen in de oligohaliene en zoete zones wordt vooral door paling en in sommige gevallen ook optrekkende fint bepaald (Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). +In de zone met sterke saliniteitsgradiënt maken vooral bot, paling en een enkele keer ook dunlipharder en fint de biomassa uit. + +Diversiteit voor diadrome omnivoren is gemiddeld hoger dan voor mariene en estuarien residente soorten voor de fuikvangsten omdat spiering als pelagiale soort minder domineert met deze vangstmethode (Figuur \@ref(fig:092-figuur-diversiteit-diadroom-EMSE)). + +```{r 092-figuur-aantallen-diadroom-EMSE, fig.cap=aantallen_diadroom_EMSE, out.width="110%"} + +aantallen_diadroom_EMSE <- + str_c("Totaal aantal gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-diadroom-EMSE, fig.cap=biomassa_diadroom_EMSE, out.width="110%"} + +biomassa_diadroom_EMSE <- + str_c("Totale biomassa gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-diadroom-EMSE, fig.cap=diversiteit_diadroom_EMSE, out.width="100%"} + +diversiteit_diadroom_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +Bij de zoetwater soorten zijn omnivoren het meest talrijk en vertegenwoordigen ze de grootste biomassa, gevolgd door benthivoren en vervolgens piscivoren (Figuur \@ref(fig:092-figuur-aantallen-zoetwater-EMSE), Figuur \@ref(fig:092-figuur-biomassa-zoetwater-EMSE)). + +De fuikresultaten van de zoetwater soorten geven een zeer verschillend beeld van dat van de ankerkuilvangsten. +Hoewel het gaat om zoetwater soorten, worden van deze estuariene gebruiksgroep relatief meer individuen per fuikdag gevangen in de zone met sterke saliniteitsgradiënt en ook in de oligohaliene zone. +Kijken we echter naar de biomassa gegevens dan verandert het beeld grondig met de hogere biomassa's in stroomopwaartse richting. + +In de groep van benthische zoetwatersoorten bepalen vooral brasem en een enkele keer blauwbandgrondel de relatieve aantallen, die in stroomopwaartse richting afnemen. +De biomassa wordt echter bijna uitsluitend door brasem bepaald, die in individuele grootte en gewicht net toeneemt in stroomopwaartse richting van gemiddeld 10g aan de grens naar 300-400g in Overbeke. +Daarom is de biomassa van deze functionele groep relatief groter in de stroomopwaartse stations. +Opvallend zijn een recordvangst van grote brasems in Steendorp (oligohalien) in de zomer van 2014 en een steur van 124cm en 13,5 kg in Kastel (zoet lange verblijftijd) in 2019. +Deze zijn niet te zien in de aantallen maar wegen wel door in de biomassa. + +Snoekbaars is de meest talrijk gevangen omnivore zoetwatersoort, maar bepaalt de biomassa niet in dezelfde mate als bij de ankerkuilvangsten. +Er worden er meer gevangen in de zone met sterke saliniteitsgradiënt maar de exemplaren worden groter en zwaarder in stroomopwaartse richting. +Ook kolblei wordt meer gevangen aan de grens maar de exemplaren worden groter in stroomopwaartse richting. +Blankvoorn en giebel zijn overal en bijna altijd aanwezig maar dragen relatief weinig bij aan de biomassa. +Het omgekeerde is waar voor snoek, meerval en karper. +Vooral in de zoete zone met korte verblijftijd bepalen hun relatief geringe aantallen in grote mate de biomassa. +Zwartbekgrondel wordt vooral in de brakke zone gevangen. + +Baars is de belangrijkste piscivore zoetwatersoort. +In de zone met sterke saliniteitsgradiënt wordt deze soort al geruime tijd in redelijke aantallen gevangen. +In de zoete zone nemen de aantallen geleidelijk toe. +Net zoals voor de meeste andere typische zoetwatersoorten neemt de biomassa toe in stroomopwaartse richting. +Sinds 2018 is er in het zoetwater echter een opvallende daling in de biomassa aan baars. + +In `r laatste_jaar` is er alver gevangen in de oligohaliene zone, de enigste planktivore zoetwatersoort in de Zeeschelde gevangen met fuiken. +Voordien was alver waargenomen in de oligohaliene zone (2020) en zoetwater met korte verblijftijd (2010). + +Vooral in de zoete zone met korte verblijtijd zijn zowel diversiteit (D), als soortenrijkdom (S) voor de omnivore en benthivore zoetwater soorten relatief hoger dan voor andere functionele groepen (Figuur \@ref(fig:092-figuur-diversiteit-zoetwater-EMSE)). + +```{r 092-figuur-aantallen-zoetwater-EMSE, fig.cap=aantallen_zoetwater_EMSE, out.width="110%"} + +aantallen_zoetwater_EMSE <- + str_c("Totaal aantal gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-zoetwater-EMSE, fig.cap=biomassa_zoetwater_EMSE, out.width="110%"} + +biomassa_zoetwater_EMSE <- + str_c("Totale biomassa gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-zoetwater-EMSE, fig.cap=diversiteit_zoetwater_EMSE, out.width="100%"} + +diversiteit_zoetwater_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg")) + +``` + +
+ +#### Trends in sleutelsoorten + +Van de 25 sleutelsoorten uit de lijst (EMSE 2021) worden er 22 waargenomen in de Zeeschelde met fuiken: 8 mariene en estuariene soorten, 6 diadrome soorten en 8 zoetwater soorten. +Slechts een aantal soorten komen echter in relatief hoge aantallen voor. + + + +***Estuariene soorten en mariene migranten*** + +Van de estuariene en mariene soorten komen brakwatergrondel, zeebaars en schol vrij frequent voor (\> 30 per fuikdag, Figuur \@ref(fig:092-figuur-mariene-sleutelsoorten)). +Ook haring en dikkopje kunnen in vrij grote aantallen voorkomen. +De overige soorten komen slechts in kleine aantallen voor. + +- Brakwatergrondel werd in de eerste jaren vooral in de zone met sterke saliniteitsgradiënt gevangen maar vertoont in recentere jaren grote pieken in het oligohalien en de zoetwater zones. + In `r laatste_jaar` werden veel brakwatergrondels gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. + +- Dikkopje bevindt zich gemiddeld meer stroomafwaarts en is veel minder talrijk dan brakwatergrondel aanwezig in de fuiken. + Er was een eenmalige grote piek in de oligohaliene zone in 2020, ook in 2023 zijn er goede aantallen in de oligohaliene zone. + Hoge aantallen dikkopje zijn waargenomen met de ankerkuilvisserij. + +- Schol komt voor in de zone met sterke saliniteitsgradiëntvangsten, fuikvangsten in `r laatste_jaar` zijn de hoogste tot nu toe. + Een stijgende trend is merkbaar sinds de vangsten van 2017. + +- Zeebaars is hoofdzakelijk aanwezig in de zone met sterke saliniteitsgradiënt. + Aantallen tonen de laatste 10 jaar een eerder afnemende trend. + +- Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. + 2019 en 2021 waren piekjaren voor de oligohaliene zone, 2021 ook voor de zone met sterke saliniteitsgradiënt. + In `r laatste_jaar` was het aantal haringen in de fuikvangsten het hoogst in de zone met sterke saliniteitsgradiënt. + +- Zeedonderpad is voor het eerste terug gevangen sinds 2014. + +```{r 092-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} + +cap_aantal_sleutelsoorten_marien <- + str_c("Aantallen van sleutelsoorten binnen estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +De meest voorkomende diadrome sleutelsoorten (\> 10 individuen per fuikdag) zijn bot, paling en (in het verleden) vooral spiering (Figuur \@ref(fig:092-figuur-diadrome-sleutelsoorten)). + +- Bot komt voor in alle scheldezones, maar met fuiken worden veel meer exemplaren in de zone met sterke saliniteitsgradiënt gevangen dan in andere zones, terwijl dat met de ankerkuil eerder in de oligohaliene en zoete zone met lange verblijftijd is. + In `r laatste_jaar` zijn terug hogere aantallen gevangen. + +- Er worden niet elk jaar finten gevangen in de fuiken. + Dat is niet abnormaal voor deze pelagiale soort, die eerder in de waterkolom dan tegen de bodem gevangen wordt. + Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). + Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was, is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. + +- Paling wordt vooral gevangen in het oligohalien en zoetwater en is vooral qua biomassa vrij belangrijk. + +- Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-aantallen-diadroom-EMSE) en \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). + Deze soort vertoonde een heel sterke piek in aantallen in 2014 in de ankerkuilvangsten en in 2015 in de fuikvangsten. + Recent vertonen de fuikaantallen een dalende trend, met in `r laatste_jaar` een bodemjaar, net zoals voor de ankerkuilvangsten. + +```{r 092-figuur-diadrome-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_diadroom, out.width="100%"} + +cap_aantal_sleutelsoorten_diadroom <- + str_c("Aantallen van diadrome sleutelsoorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +De meest voorkomende zoetwater sleutelsoorten qua aantallen/biomassa zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:092-figuur-zoetwater-sleutelsoorten)). + +- Na een afname in de periode 2009-2015 van het aantal blankvoorns in de fuikvangsten in alle zones behalve het zoet met korte verblijftijd, variëren de aantallen met een trend tot lichte stijging in alle zones behalve de zone met sterke saliniteitsgradiënt. + Ook in `r laatste_jaar` werden er relatief veel blankvoorns gevangen in het oligohalien en zoetwater. + +- De hoogste aantallen brasem worden meestal gevangen in het oligohalien. + Verder vertoont brasem geen duidelijke trend in aantallen. + +- Snoekbaars vangsten in de fuiken blijven relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes hogere aantallen in fuiken in meer saline zones. + +```{r 092-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} + +cap_aantal_sleutelsoorten_zoetwater <- + str_c("Aantallen van zoetwater sleutelsoorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg")) + +``` + +
+ +#### Alternatieve evaluatie per estuarien habitatgebruik of dieet + +Alternatief aan de EMSE indeling kunnen we het gildenconcept toepassen zoals gebruikelijk en enerzijds het estuarien habitat gebruik door de visgemeenschap evalueren en anderzijds de visgemeenschap positioneren in het estuariene voedselweb. +Op die manier wordt per functioneel aspect de volledige visgemeenschap van de Zeeschelde beschouwd. + +Fuikvangsten en ankerkuil leveren een verschillend beeld op van de relatieve densiteit en biomassa per saliniteitzone. +In de zone met grote saliniteitsgradiënt worden gemiddeld de grootste aantallen per fuikdag gevangen. +De biomassa verdeling toont dan weer een ander beeld naargelang het estuarien gebruik of naargelang het dieet. + +##### Estuarien habitat gebruik + +De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien habitat gebruik worden weergegeven in respectivelijk Figuur \@ref(fig:092-figuur-aantallen-habitat), Figuur \@ref(fig:092-figuur-biomassa-habitat) en Figuur \@ref(fig:092-figuur-diversiteit-habitat). +Het beeld op basis van fuikvangsten is iets complexer en toont andere accenten dan op basis van ankerkuildata. + +In de zone met sterke saliniteitgradiënt overheerst bot zowel naar aantallen als naar biomassa in de groep van mariene migranten. +Sinds 2012 zijn aantallen en biomassa per fuikdag wel plots fel verminderd. +Ook zeebaars en haring zijn steeds in grote aantallen aanwezig, in toenemende mate sinds 2015. +Schol verdween na 2010 maar is sinds 2018 terug aanwezig. +Brakwatergrondel en dikkopje zijn als estuarien residenten ook elk jaar vertegenwoordigd in redelijk grote aantallen. +in 2023 valt de aanwezigheid van schol en vooral steenbolk op. + +In de oligohaliene zone zijn dikkopje en brakwatergrondel samen met haring de belangrijkste soorten uit deze functionele groep. +In de zoete zones is brakwatergrondel de belangrijkste estuariene soort. +De aantallen in de fuikvangsten variëren er sterk, met af en toe een grote piek. +De aantallen en biomassa van grondels bereiken in 2023 hoge waardes in oligohalien en zoet met lange verblijftijd. +In drogere jaren komen ook haring en zeebaars opgroeien tot in de zoete zones. + +Bot is de belangrijkste trekvis in de zone met sterke saliniteitgradiënt, in aantallen én biomassa, in aantallen gevolgd door driedoornige stekelbaars en spiering. +Paling overheerst echter de biomassa en in sommige jaren wegen ook de optrekkende/terugkerende finten mee. +In de meer stroomopwaartse oligohaliene en zoete zones is spiering zonder meer de meest talrijk aanwezige trekvis. +Ook hier overheerst paling echter in de trekvis biomassa, soms bijgestaan door fint. + +Aantallen en biomassa van de zoetwatersoorten vertonen een meer gediversifieerd beeld. +Snoekbaars is de dominante zoetwatersoort in aantal, maar de dominantie is niet zeer uitgesproken. +snoekbaars, karper, europese meerval, brasem en snoek leveren de belangrijkste bijdragen aan de biomassa van zoetwatersoorten. + +De zoewatervissen zijn de meest soortenrijke estuariene gebruiksgroep. +De diversiteit is het grootst voor de zoetwatersoorten in de zoete zone met korte verblijftijd. +Het is vooral in deze groep dat in 2022 en 2023 minder soorten gevangen werden met de fuiken, vermoedelijk ook door het feit dat de vangstinspanning gehalveerd werd. +Mariene soorten en estuariene migranten zijn duidelijk met een hoger aantal soorten en diversiteit (verdubbeling of meer) vertegenwoordigd in de zone met grote saliniteitsgradiënt dan in de andere saliniteitszones. + +
+ +```{r 092-figuur-aantallen-habitat, fig.cap=aantallen_habitat, out.width="110%"} + +aantallen_habitat <- + str_c("Totaal aantal gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-habitat, fig.cap=biomassa_habitat, out.width="110%"} + +biomassa_habitat <- + str_c("Totale biomassa gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-habitat, fig.cap=diversiteit_habitat, out.width="100%"} + +diversiteit_habitat <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg")) + +``` + +
+ +##### Dieet + +De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weergegeven in respectievelijk Figuur \@ref(fig:092-figuur-aantallen-dieet), Figuur \@ref(fig:092-figuur-biomassa-dieet) en Figuur \@ref(fig:092-figuur-diversiteit-dieet). + + +Benthivoren en omnivoren zijn het meest talrijk en maken ook het grootste deel van de biomassa uit. +Tong in de zone met sterke saliniteitsgradiënt en brakwatergrondel in de zoetwater zone zijn traditioneel de dominante benthivoren qua aantallen. +In 2023 worden er meer schol waargenomen dan tong. +In biomassa blijft tong dominant in de oligohaliene zone en domineert brasem in de zoetwater zone. + +Spiering (zoete zone) en bot (saliniteitsgradiënt) zijn de dominante omnivoren wat betreft aantallen. +Een groot aantal steenbolk laat zich opmerken in 2023 en zijn dominant in biomassa in de zone met sterke saliniteitsgradiënt. +Voor de biomassa bij de omnivoren is er meestal geen duidelijke dominantie tussen de meest aspectbepalende soorten: bot, europese meerval, fint, karper, kolblei, snoek en snoekbaars. +Dit wordt vaak bepaald door de vangst van enkele grote individuen. + +Baars, rivierprik en zeeprik zijn de enige piscivoren die in kleine en sterk wisselende aantallen gevangen worden. +Haring en sprot zijn de enige planktivore soorten van betekenis in de Zeeschelde. + +Omnivoren vormen de meest soortenrijke trofische groep maar de diversiteit in deze groep (berekend op basis van aantallen) blijft toch relatief klein door de dominantie van vooral bot en spiering in de aantallen. +Benthivoren zijn de tweede trofische groep naar soortenrijkdom toe, maar zijn eveneens sterk gedomineerd door een beperkt aantal soorten. + +Net zoals bij de ankerkuilgegevens geldt hier de kanttekening dat de meeste spieringen juveniele planktivoren zijn en dat adulte spiering, europese meerval, snoek, snoekbaars en zeebaars eigenlijk voornamelijk als piscivoor gekend staan in de Zeeschelde. + +
+ +```{r 092-figuur-aantallen-dieet, fig.cap=aantallen_dieet, out.width="110%"} + +aantallen_dieet <- + str_c("Totaal aantal gevangen individuen per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-dieet, fig.cap=biomassa_dieet, out.width="110%"} + +biomassa_dieet <- + str_c("Totale biomassa gevangen individuen per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-dieet, fig.cap=diversiteit_dieet, out.width="100%"} + +diversiteit_dieet <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg")) + +``` + +
+ +#### Visindex + +We berekenden de indexwaarden voor alle beschikbare gegevens (Tabel \@ref(tab:092-tabel-visindex), Figuur ). +De evolutie van de visindex in de Zeeschelde is ook één van de INBO natuurindicatoren () + +In de periode 2011-2020 was deze indicator redelijk stabiel in vergelijking tot het decennium dat daaraan voorafging: De zoete zone scoorde doorgaans beter dan de zone met sterke saliniteitsgradiënt en de oligohaliene zone had meestal de laagste score. +De laatste twee jaren daalde de EQR van de zoete zone echter van goed ecologisch potentieel in 2020 over matig in 2021 naar ontoereikend in 2022 en `r laatste_jaar`. +De beide andere zones haalden nog nooit de goede ecologische toestand en scoren beide ontoereikend in `r laatste_jaar`. + +Figuur \@ref(fig:092-figuur-spindiagram) geeft voor elke zone een indicatie van de ecologische aspecten die minder en beter scoren in `r laatste_jaar`. +Zie Tabel \@ref(tab:090-tabel-metrieken-visindex) voor verklaring van de afkortingen. +In de zoetwaterzone scoren alle metrieken slecht behalve het totaal aantal soorten en het aantal individuen per fuikdag. +Vooral het percentage van gespecialiseerde paaiers trekt het geheel omlaag. +In de oligohaliene zone scoren alle metrieken laag en het totaal aantal individuen per fuikdag goed. +In de saliniteitsgradiënt is de score voor alle metrieken laag. + +```{r 092-tabel-visindex} + +tabel_visindex <- + read_excel(paste0(maak_pad(hoofdstuk, "tabellen"), "visindexreeks.xlsx"), + sheet = "tabel1995_2022", + skip = 1) + +cap_visindex <- + paste0("De EQR-waarde en appreciatie per jaar per saliniteitszone in de Zeeschelde (1995-", laatste_jaar, ") berekend met de zone-specifieke index.") + +tabel_visindex %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_visindex, + # align = c("l", rep("c", 12)), + col.names = rep(c("jaar", "EQR", "appreciatie"), 3), + escape = FALSE, + linesep = "") %>% + add_header_above(c("Zoetwater zone" = 3, "Oligohaliene zone" = 3, "Mesohaliene zone" = 3)) %>% + kable_styling("striped", + latex_options = c("striped")) + +``` + +
+ +```{r 092-figuur-visindex, fig.cap=cap_fig_visindex, out.width="100%"} + +cap_fig_visindex <- + paste0("De EQR-score per jaar en per saliniteitszone in de Zeeschelde (1995-", laatste_jaar, ") berekend met de zone-specifieke index.") + +knitr::include_graphics(str_c(maak_pad(hoofdstuk, "figuren/EQR"), "visindex_EQR.png")) + +``` + +
+ +```{r 092-figuur-spindiagram, fig.cap=cap_spindiagram, out.width="70%", fig.show="hold", fig.fullwidth=TRUE} + +cap_spindiagram <- + str_c("Metriek scores en EQR voor de verschillende saliniteitszones van de Zeeschelde in ",laatste_jaar,". Zie tabel 1.2 voor betekenis metrieken") + +figs_spin <- + list.files(maak_pad(hoofdstuk, "figuren/EQR"), full.names = TRUE) %>% + str_subset("spin") %>% + sort() + +knitr::include_graphics(figs_spin) + +``` + +
diff --git a/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd new file mode 100644 index 0000000..e8cacc2 --- /dev/null +++ b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd @@ -0,0 +1,308 @@ +```{r 093-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 093-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 093-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 093-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 093-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 093-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "vissen_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +## Algemene conclusies + +### Afvissingen in `r laatste_jaar` + +`r laatste_jaar` was een tweede **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. +Dit geldt zowel voor de ankerkuil als voor de fuikvangsten, waardoor het beeld van de absolute dominantie van deze soort zelfs in het pelagiaal vervaagt. +Sterke schommelingen in spiering aantallen werden vroeger al opgemerkt in andere gebieden en kunnen deels teruggebracht worden op lage densiteiten van 1 of 2 jaarklassen (Belyanina 1969), waarbij verschillen in leeftijdssamenstelling van populaties voor een stuk gelinkt zijn met verschillen in groeisnelheid en maturatie van de verschillende jaarklassen (Lapin, 1960). +Om hier een beter zicht op te krijgen zou voor de Schelde ruimtelijke en seizoenale patronen per leeftijdgroep over de jaren heen geanalyseerd moeten worden in relatie tot abiotiek en beheer. + +In 2023 werd met de ankerkuil **uitzonderlijk veel grondels** (*Potamoschistus* sp.) gevangen in vooral het najaar in Branst en Steendorp. +In Steendorp ging het om brakwatergrondel, in Branst opmerkelijk om dikkopje. + +De **visindex** voor zowel zoet, oligohalien als sterke saliniteitsgradiënt bereikt in 2023 een ontoereikende status. +Interpretatie dient met de nodige voorzichtigheid te gebeuren. +De **vangstinspanning met de fuiken is in 2022 en 2023 gehalveerd**. +Fuiken werden telkens 1 in plaats van 2 etmaal uitgezet. +Dit had een invloed op het aantal gevangen soorten. +Verschillende van de metrieken gebruikt in de visindex (Breine et al. 2010) zijn direct gerelateerd aan het aantal soorten en hierdoor zal mogelijks een breuk in de trends van soortenrijkdom bij fuikvangsten ontstaan. +Opmerkelijk is wel dat de visindex al een ferme duik neemt in 2021, vergelijkbaar met 2016, een afname die best in meer detail bekeken wordt. + +### Algemene kenmerken van de Zeeschelde populaties + +Naar **estuarien habitatgebruik** overheersen de trekvissen de visgemeenschappen van de Zeeschelde in aantal en biomassa. +Het estuarium heeft dus weer zijn functie opgenomen in de levenscyclus van deze soorten. +Om te evalueren of de populaties echt gevestigd en duurzaam zijn is echter een cohorte analyse van de betrokken soorten in tijd en ruimte nodig. + +Naar **dieet** overheersen omnivore soorten, een normale opportunistische evolutie in een estuarium met wisselende levensomstandigheden. +Toch wordt het voedselweb stilaan complexer. +Dit uit zich in een toename van benthivore en piscivore soorten. +Om dit echt te evalueren moet voor de belangrijkste soorten rekening gehouden worden met de dieet shift die ze maken in de overgang van juveniel naar adult. +Ook worden in de EMSE classificatie een aantal gekende piscivoren (volwassen spiering, snoekbaars, zeebaars, snoek, europese meerval) over de volledige levenscyclus tot omnivoren gerekend. +Voor de soorten die de grootste biomassa uitmaken kunnen gerichte maag- en isotoopanalyses zoals voorgesteld in en ter ondersteuning en vervolg op Van de Meutter et al (2021) een het beeld van voedselinteracties verscherpen. + +### Ankerkuil versus fuikresultaten + +Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, fuikvisserij bemonstert eerder nabij de bodem en beide methoden verschaffen complementaire informatie. +Algemeen worden meer soorten gevangen met de ankerkuil. +De veel grotere omvang van de vangst vergroot de kans op éénmalige vangst van zeldzaamheden. +De resultaten van de fuikvangsten leveren echter een hogere Shannon diversiteit (Breine & Van den Bergh, 2022). + +In deze rapportage kwamen echter nog opvallende verschillen aan bod: + +- Fuikvangsten en ankerkuil leveren een verschillend beeld op van de relatieve densiteit en biomassa per saliniteitszone. + Met de ankerkuil worden de meeste vissen per m³ gevangen in de zoete zone en het minst in de zone met sterke saliniteitsgradiënt. + In deze laatste zone worden echter gemiddeld de grootste aantallen met fuiken gevangen. + Beide methoden leveren dus een omgekeerd beeld op van relatieve vis densiteit per saliniteitszone. + +- Pieken en dalen in de aantallen van de sleutelsoorten verschillen sterk tussen vangstmethodes. + De grote spieringpiek in de ankerkuildata valt in bijvoorbeeld in 2014 terwijl die in 2015 valt op basis van de fuikgegevens. + Voor haring waren dat 2022 en 2021 respectievelijk. + +Hieruit kunnen we enerzijds afleiden dat het omzetten van vangstaantallen naar aantal per volume eenheid niet zo evident is. +Anderzijds zijn plaats en tijdstip zeer bepalend voor het beeld dat we ons vormen van de visgemeenschap. +Concluderend is er een noodzaak om met innovatieve monitoring (bijvoorbeeld met echosounding) continue data te verzamelen over de visgemeenschap op de besproken vislocaties. +Dit onderzoek moet helpen om de variaties in de vispopulaties in ruimte en tijd te verklaren. +Omgekeerd levert de klassieke monitoring informatie over de aanwezige soorten. + +### EMSE methodiek + +- EMSE soortenlijsten en categorieën voor de Zeeschelde moeten blijvend kritisch bekeken worden. + +- Het 'nesten' van gilden maakt de rapportage langer en ingewikkelder en levert geen helderder beeld op van de functies van de Zeeschelde voor visgemeenschappen. + +- Naar estuarien habitat gebruik zou het duidelijker zijn om mariene migranten en estuariene residenten als aparte groepen te beschouwen. + +- Dieetshifts in de overgang van juvenielen naar adulten mee in rekening brengen zou het inzicht in de trofische relaties verbeteren. + +- Om de duurzaamheid van de belangrijkste populaties beter in te schatten zijn cohorte analyses en evaluatie van rekrutering aangewezen. + +- EMSE stelt voor om voor de visgemeenschappen afhankelijk van de soort gebruik te maken van of ankerkuil of fuikgegevens. + Om de visgemeenschap op een zinvolle manier in zijn geheel te evalueren is het beter om alle soorten op basis van beide datasets te beoordelen. + + +## Referenties + +Able K. +(2005). +A re-examination of fish estuarine dependence: Evidence for connectivity between estuarine and ocean habitats. +Estuarine, Coastal and Shelf Science. +64 (1): 5-17. + +Baldoa F. +& Drake P. (2002). +A multivariate approach to the feeding habits of small fishes in the Guadalquivir Estuary. +Journal of Fish Biology. +61: 21-32. + +Belyanina T. N.  +(1969).  +Synopsis of biological data on smelt *Osmerus eperlanus* (Linnaeus, 1758).  +FAO Fisheries Synopsis. +No. 78. + +Breine J.J., Maes J., Quataert, P., Van den Bergh, E., Simoens, I., Van Thuyne, G. +& C. +Belpaire (2007). +A fish-based assessment tool for the ecological quality of the brackish Schelde estuary in Flanders (Belgium). +Hydrobiologia, 575: 141-159. + +Breine, J., Quataert, P., Stevens, M., Ollevier, F., Volckaert, F.A.M., Van den Bergh, E. +& J. +Maes (2010). +A zone-specific fish-based biotic index as a management tool for the Zeeschelde estuary (Belgium). +Marine Pollution Bulletin, 60: 1099-1112. + +Breine J. +& Van den Bergh E. +(2022). +Vissen in de Zeeschelde: vertellen ankerkuil en fuiken hetzelfde? +Scheldesymposium Antwerpen. + +Brosens D., Breine J., Van Thuyne G., Belpaire C., Desmet P. & Verreycken H. +(2015) VIS - A database on the distribution of fishes in inland and estuarine waters in Flanders, Belgium. +ZooKeys 475: 119-145. +doi: 10.3897/zookeys.475.8556 + +de Boois I. J. +& Couperus A.S. +(2022). +Ankerkuilbemonstering in de Westerschelde. +Resultaten 2022 en meerjarenoverzichten. +WUR rapport C071/22. +39pp. +Wageningen. + +Elliott M. +& Hemingway K.L. +(2002). +In: Elliott, M. +& Hemingway K.L. +(Editors). +Fishes in estuaries. +Blackwell Science, London. +577-579. + +EMSE (2021). +Evaluatiemethodiek Schelde-estuarium: Update 2021. +Antea, Bureau Waardenburg, Deltares, UAntwerpen, UGent, INBO en NIOZ. + +Lapin I.E. (1960). +On peculiarities of population dynamics in short lived fishes (freshwater smelt 1960 as example). +Zoologicheskii Zhurnal. +39(9): 1371-83. + +Maes J., Stevens M. +& Breine J. +(2007). +Modelling the migration opportunities of diadromous fish species along a gradient of dissolved oxygen concentration in a European tidal watershed. +Estuarine, Coastal and Shelf Science. +75: 151-162. + +Maes J., Stevens M. +& Breine J. +(2008). +Poor water quality constrains the distribution and movements of twaite shad *Alosa fallax fallax* (Lacépède, 1803) in the watershed of river Scheldt. +Hydrobiologia. +602: 129-143. + +Maris T., Geerts L., & Meire P. (2011). +Basiswaterkwaliteit In Maris T. +& P. +Meire (Eds) Onderzoek naar de gevolgen van het Sigmaplan, baggeractiviteiten en havenuitbreiding in de Zeeschelde op het milieu. +Geïntegreerd eindverslag van het onderzoek verricht in 2009-2010. +011-143 Universiteit Antwerpen, 169pp. + +Scholle J. +& Schuchardt B. +(2019). +Analysis of longer-term data on the abundance of different age classen of stints (*Osmerus eperlanus*) in the Elbe estuary and the other Wadden Sea estuaries. +Bioconsult Bremen. +95pp. + +Scholle J. +& Schuchardt B. +(2020). +Analysis of longer-term data on the abundance of different age classen of stints (*Osmerus eperlanus*) in the Elbe estuary. +Part 2 possible influencing factors. +Bioconsult Bremen. +108 pp. + +Stevens M., Van den Neucker T., Mouton A., Buysse D., Martens S., Baeyens R., Jacobs Y., Gelaude E. +& Coeck J. +(2009). +Onderzoek naar de trekvissoorten in het stroomgebied van de Schelde. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2009 (INBO.R.2009.9), 188pp. + +Van de Meutter F, De Regge N, Bezdenjesnji, O (2021). +Dieetanalyse van hogere trofische niveaus in de Zeeschelde: deel vissen. +Resultaten van een studie met stabiele isotopen. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (41). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.44407431 + +Van Der Meulen D., Walsh C., Taylor M. +& Gray C. +(2013). +Habitat requirements and spawning strategy of an estuarine-dependent fish, Percalates colonorum. +Marine and Freshwater Research. +65 (3): 218-227. + +\newpage + +## Bijlage + +```{r 093-tabel-zeeschelde-soorten} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) %>% + rename(`Nederlandse naam` = soort, `Wetensch. naam` = wetensch_naam, + Saliniteitsgroep = salgroep, Dieet = dieet, + Fuiken = fuiken, Ankerkuil = ankerkuil) + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +cap_soortenlijst <- + paste0("Overzicht van alle waargenomen vissoorten tijdens de ankerkuilcampagnes en fuikvangsten in de Zeeschelde in de periode 2009-", + laatste_jaar, + ". Soorten in vet en cursief geven de sleutelsoorten weer uit de EMSE evaluatie.") + +soortenlijst %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(`Wetensch. naam` = str_to_sentence(`Wetensch. naam`)) %>% + mutate(across(c(-`Nederlandse naam`, -`Wetensch. naam`), ~cell_spec(., color = "black"))) %>% + # mutate(across(everything(), ~cell_spec(., , bold = TRUE, italic = TRUE, color = "black", background = "lightgreen"))) %>% + mutate(`Nederlandse naam` = + if_else(`Nederlandse naam` %in% sleutelsoorten_EMSE$soort, + cell_spec(`Nederlandse naam`, bold = TRUE, italic = TRUE, color = "black"), + cell_spec(`Nederlandse naam`, color = "black"))) %>% + mutate(`Wetensch. naam` = cell_spec(`Wetensch. naam`, italic = TRUE, color = "black")) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + longtable = TRUE, + caption = cap_soortenlijst, + align = c(rep("l", 4), rep("c", 2)), + linesep = "") %>% + kable_styling(latex_options = c("striped", "scale_down"), + font_size = 9) + +``` From 7f0a3043e2b301f15fa4915a91ca99feb3d8f007 Mon Sep 17 00:00:00 2001 From: VANOVERBEKE Date: Wed, 18 Jun 2025 10:03:56 +0200 Subject: [PATCH 02/11] vissen analyse + klaarzetten rapportage --- .../20_moneos_visdata_fuiken_integratie.Rmd | 62 ++++---- ...21_moneos_visdata_ankerkuil_integratie.Rmd | 146 +++++++++++------ .../30_visdata_fuiken_controle_EMSE.Rmd | 4 +- .../31_visdata_ankerkuil_controle_EMSE.Rmd | 4 +- .../40_moneos_analyse_fuiken_EMSE.Rmd | 121 ++++++++++++-- .../41_moneos_analyse_ankerkuil_EMSE.Rmd | 149 ++++++++++-------- moneos_2025/moneos_2025.Rproj | 2 + 7 files changed, 329 insertions(+), 159 deletions(-) diff --git a/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd b/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd index 4fb72ec..97c6505 100644 --- a/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd +++ b/moneos_2025/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd @@ -139,17 +139,29 @@ names(level_key) <- old_names ``` -```{r correcties soortnamen historische data, eval=FALSE} +```{r correcties soortnamen recente data} -rename_vector <- - c("kleine koornaarvis" = "koornaarvis") +data_recent <- + data_recent %>% + mutate(Soort = + case_match(Soort, + "blauwband" ~ "blauwbandgrondel", + .default = Soort)) -aantal_historisch <- - aantal_historisch %>% - rename(!!!rename_vector) -gewicht_historisch <- - gewicht_historisch %>% - rename(!!!rename_vector) +``` + + +```{r correcties soortnamen historische data, eval=FALSE} + +# rename_vector <- +# c("kleine koornaarvis" = "koornaarvis") +# +# aantal_historisch <- +# aantal_historisch %>% +# rename(!!!rename_vector) +# gewicht_historisch <- +# gewicht_historisch %>% +# rename(!!!rename_vector) ``` @@ -188,17 +200,19 @@ gewicht_NA_of_0_ruw <- "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN") -soort_NA <- +(soort_NA <- gewicht_NA_of_0_ruw %>% filter(TAXONAANTAL == 1) %>% pull(Soort) %>% - unique() + unique()) + if (length(soort_NA) > 0) { data_lengte <- data_recent %>% filter(Soort %in% soort_NA, - !is.na(TAXONLEN)) %>% + !is.na(TAXONLEN), + !is.na(TAXONGEW)) %>% select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) p <- @@ -240,11 +254,12 @@ if (length(soort_NA) > 0) { mutate(prop_aantal = TAXONAANTAL/aantal, gewicht_imputed = case_when( - TAXONAANTAL > 1 ~ gewicht*prop_aantal, - TRUE ~ exp(int + slope*log(TAXONLEN)) - )) - + TAXONAANTAL == 1 & !is.na(TAXONLEN) ~ exp(int + slope*log(TAXONLEN)), + TRUE ~ gewicht*prop_aantal)) + if (!dir.exists(str_c(pad_data, "controle"))){ + dir.create(str_c(pad_data, "controle")) + } write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, # NA_aantal = aantal_NA_of_0_ruw, NA_gewicht = gewicht_NA), @@ -472,17 +487,10 @@ setdiff(data_per_datum %>% soorten_historisch_aanwezig) %>% sort()) -``` - - -```{r correcties soortnamen recente data, eval=FALSE} - -data_per_datum <- - data_per_datum %>% - mutate(soort = - case_match(soort, - "blauwband" ~ "blauwbandgrondel", - .default = soort)) +write_xlsx(list(nieuwe_soorten = + data_per_datum %>% + filter(soort %in% unieke_soorten_recent_aanwezig)), + path = str_c(pad_data, "nieuwe_soorten_fuiken.xlsx")) ``` diff --git a/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd index ac1a9f7..56c4ff4 100644 --- a/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd +++ b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd @@ -124,15 +124,15 @@ names(level_key) <- old_names # rename_vector_historisch <- # c("chinese wolhandkrab" = "wolhandkrab") -rename_vector_historisch <- - c("gewone zwemkrab" = "zwemkrab") - -aantal_historisch <- - aantal_historisch %>% - rename(!!!rename_vector_historisch) -gewicht_historisch <- - gewicht_historisch %>% - rename(!!!rename_vector_historisch) +# rename_vector_historisch <- +# c("gewone zwemkrab" = "zwemkrab") +# +# aantal_historisch <- +# aantal_historisch %>% +# rename(!!!rename_vector_historisch) +# gewicht_historisch <- +# gewicht_historisch %>% +# rename(!!!rename_vector_historisch) data_recent <- @@ -149,6 +149,26 @@ data_recent <- ``` +```{r controle verdunningfactor} + +dilution_NA <- + data_recent %>% + filter(is.na(METI_DILUTION_FACTOR)) %>% + select("MetingID", "WaarnemingID", "Gebiedcode", + "Gebiednaam", + "Begindatum", "Methodenaam", + "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") + +dat_dil <- + data_recent %>% + filter(Gebiedcode %in% dilution_NA$Gebiedcode, + WaarnemingID %in% dilution_NA$WaarnemingID) + + +``` + + ```{r correctie gewicht met verdunningsfactor} data_recent <- @@ -192,18 +212,21 @@ gewicht_NA_of_0_ruw <- "TaxonKey", "Soort", "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") -soort_NA <- +(soort_NA <- gewicht_NA_of_0_ruw %>% - filter(TAXONAANTAL == 1) %>% + filter(round(TAXONAANTAL/METI_DILUTION_FACTOR) == 1) %>% pull(Soort) %>% - unique() + unique()) if (length(soort_NA) > 0) { data_lengte <- data_recent %>% filter(Soort %in% soort_NA, - !is.na(TAXONLEN)) %>% - select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) + !is.na(TAXONLEN), + !is.na(TAXONGEW)) %>% + select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN, METI_DILUTION_FACTOR) %>% + mutate(TAXONAANTAL = TAXONAANTAL/METI_DILUTION_FACTOR, + TAXONGEW = TAXONGEW/METI_DILUTION_FACTOR) data_lengte %>% ggplot(aes(TAXONLEN, TAXONGEW)) + @@ -219,37 +242,47 @@ if (length(soort_NA) > 0) { summarise(int = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[1], slope = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[2]) %>% ungroup() - + datum_soort <- - data_recent %>% - mutate(gewicht = if_else(is.na(TAXONGEW), - TAXONTOTGEW, TAXONGEW)) %>% - select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% - filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% - drop_na() %>% - group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% - summarise(across(everything(), sum)) %>% - ungroup() - - -gewicht_NA <- - gewicht_NA_of_0_ruw %>% - select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, - TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN) %>% - left_join(datum_soort) %>% - left_join(regressie_lengte) %>% - replace_na(list(aantal = 0, gewicht = 0)) %>% - mutate(prop_aantal = TAXONAANTAL/aantal, - gewicht_imputed = - case_when( - TAXONAANTAL > 1 ~ gewicht*prop_aantal, - TRUE ~ exp(int + slope*log(TAXONLEN)) - )) - -write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, - # NA_aantal = aantal_NA_of_0_ruw, - NA_gewicht = gewicht_NA), - path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) + data_recent %>% + mutate(gewicht = if_else(is.na(TAXONGEW), + TAXONTOTGEW, TAXONGEW)) %>% + select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% + filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% + drop_na() %>% + group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% + summarise(across(everything(), sum)) %>% + ungroup() + + + gewicht_NA <- + gewicht_NA_of_0_ruw %>% + select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, + TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN, METI_DILUTION_FACTOR) %>% + left_join(datum_soort) %>% + left_join(regressie_lengte) %>% + replace_na(list(aantal = 0, gewicht = 0)) %>% + mutate(prop_aantal = TAXONAANTAL/aantal, + # gewicht_imputed = + # case_when( + # # round(TAXONAANTAL/METI_DILUTION_FACTOR) > 1 | is.na(TAXONLEN) ~ gewicht*prop_aantal, + # TAXONAANTAL > 1 ~ gewicht*prop_aantal, + # TRUE ~ exp(int + slope*log(TAXONLEN)) + # ), + gewicht_imputed = + case_when( + (!is.na(METI_DILUTION_FACTOR) & round(TAXONAANTAL/METI_DILUTION_FACTOR)) > 1 | is.na(TAXONLEN) ~ gewicht*prop_aantal, + is.na(METI_DILUTION_FACTOR) & TAXONAANTAL == 1 ~ exp(int + slope*log(TAXONLEN)), + TRUE ~ exp(int + slope*log(TAXONLEN))*METI_DILUTION_FACTOR + )) + + if (!dir.exists(str_c(pad_data, "controle"))){ + dir.create(str_c(pad_data, "controle")) + } + write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + # NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) } ``` @@ -317,6 +350,16 @@ dat_NA <- data_per_datum %>% filter(is.na(aantal) | is.na(gewicht)) +# if (length(dat_NA) > 0) { +# if (!dir.exists(str_c(pad_data, "controle"))){ +# dir.create(str_c(pad_data, "controle")) +# } +# write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, +# # NA_aantal = aantal_NA_of_0_ruw, +# NA_impute = dat_NA), +# path = str_c(pad_data, "controle/controle_NA_na_imputation.xlsx")) +# } + ``` @@ -324,7 +367,7 @@ dat_NA <- campagnes <- data_per_datum %>% - select(locatie, jaar, maand, seizoen, getijde) %>% + select(locatie, jaar, maand, seizoen, getijde, uren, volume) %>% distinct() camp_tot <- campagnes %>% @@ -365,10 +408,12 @@ uniek_aantal_of_gewicht_inv <- filter(str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) +if (!dir.exists(str_c(pad_data, "controle"))){ + dir.create(str_c(pad_data, "controle")) +} write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, - NA_aantal = aantal_NA_of_0_ruw, - NA_gewicht = gewicht_NA_of_0_ruw), - path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) + NA_impute = uniek_aantal_of_gewicht_vis), + path = str_c(pad_data, "controle/controle_NA_aantal_gewicht_na_imputation.xlsx")) (uniek_aantal_of_gewicht_historisch <- @@ -501,6 +546,11 @@ soorten_totaal_aanwezig <- # data_per_datum %>% # filter(str_detect(soort, "zwemkrab")) +write_xlsx(list(nieuwe_soorten = + data_per_datum %>% + filter(soort %in% unieke_soorten_recent_aanwezig)), + path = str_c(pad_data, "nieuwe_soorten_ankerkuil.xlsx")) + ``` diff --git a/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd b/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd index c8246c8..6dad9f5 100644 --- a/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd +++ b/moneos_2025/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd @@ -92,10 +92,10 @@ fuiken_aantal_long <- ```{r EMSE} -nieuwe_soorten <- +(nieuwe_soorten <- fuiken_aantal_long %>% filter(is.na(fuiken)) %>% - distinct(soort, fuiken, ankerkuil) + distinct(soort, fuiken, ankerkuil)) voorkomen <- fuiken_aantal_long %>% diff --git a/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd b/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd index cba4f24..8db0cf5 100644 --- a/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd +++ b/moneos_2025/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd @@ -88,10 +88,10 @@ ankerkuil_aantal_long <- ```{r EMSE} -nieuwe_soorten <- +(nieuwe_soorten <- ankerkuil_aantal_long %>% filter(is.na(ankerkuil)) %>% - distinct(soort, fuiken, ankerkuil) + distinct(soort, fuiken, ankerkuil)) voorkomen <- ankerkuil_aantal_long %>% diff --git a/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd b/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd index 2017d2e..6b4e521 100644 --- a/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd +++ b/moneos_2025/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd @@ -54,6 +54,11 @@ pad_data <- maak_pad(params$hoofdstuk, "data") pad_figuren <- maak_pad(params$hoofdstuk, "figuren/fuiken") pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/fuiken") +if (!dir.exists(pad_data)) dir.create(pad_data) +if (!dir.exists(pad_figuren)) dir.create(pad_figuren) +if (!dir.exists(pad_tabellen)) dir.create(pad_tabellen) + + ``` @@ -335,6 +340,19 @@ setdiff(soorten_vis, soorten_fuiken_sheet) ``` +```{r salgroep en dieet haringachtigen} + +soortenlijst %>% + filter(soort %in% c("haring", "sprot")) + +data_fuiken <- + data_fuiken %>% + mutate(salgroep = if_else(soort == "haringachtigen", "mariene migranten", salgroep), + dieet = if_else(soort == "haringachtigen", "planktivoren", dieet)) + +``` + + ```{r aantal-en-gewicht-per-fuikdag} data_fuiken <- @@ -391,6 +409,18 @@ indeling_EMSE_missing <- ``` + +```{r exclusie soorten} + +soorten_niet_in_aantal <- + c("grondel sp", "haringachtigen", "karperachtige") + +soorten_niet_in_funcgroep <- + c("grondel sp", "karperachtige") + +``` + + #### relatie aantal - gewicht ```{r relatie-aantal-gewicht, eval = FALSE} @@ -427,20 +457,24 @@ data_fuiken %>% aantal_soorten_seizoen_locatie <- data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, seizoen, locatie, soort) %>% count(jaar, seizoen, locatie, name = "soorten") %>% bind_rows(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, locatie, soort) %>% count(jaar, locatie, name = "soorten") %>% mutate(seizoen = "totaal over seizoenen")) %>% bind_rows(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, seizoen, soort) %>% count(jaar, seizoen, name = "soorten") %>% mutate(locatie = "totaal over locaties")) %>% bind_rows(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, soort) %>% count(jaar, name = "soorten") %>% mutate(seizoen = "totaal over seizoenen", @@ -471,6 +505,7 @@ ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, he aantal_soorten_seizoen <- data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, seizoen, locatie, soort) %>% count(jaar, seizoen, locatie, name = "soorten") %>% group_by(jaar, seizoen) %>% @@ -478,6 +513,7 @@ aantal_soorten_seizoen <- ungroup() %>% bind_rows(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, locatie, soort) %>% count(jaar, locatie, name = "soorten") %>% group_by(jaar) %>% @@ -504,6 +540,7 @@ ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5 aantal_soorten_locatie <- data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, seizoen, locatie, soort) %>% count(jaar, seizoen, locatie, name = "soorten") %>% group_by(jaar, locatie) %>% @@ -511,10 +548,12 @@ aantal_soorten_locatie <- ungroup() %>% left_join(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, locatie, soort) %>% count(jaar, locatie, name = "soorten_tot")) %>% bind_rows(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, seizoen, soort) %>% count(jaar, seizoen, name = "soorten") %>% group_by(jaar) %>% @@ -523,6 +562,7 @@ aantal_soorten_locatie <- mutate(locatie = "totaal over locaties") %>% left_join(data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, soort) %>% count(jaar, name = "soorten_tot") %>% mutate(locatie = "totaal over locaties"))) %>% @@ -551,6 +591,7 @@ ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5 aantal_soorten_totaal <- data_fuiken %>% filter(aantal > 0) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% distinct(jaar, soort) %>% count(jaar, name = "soorten") @@ -601,23 +642,27 @@ sheets_figuren[["aantal_soorten_totaal"]] <- tabel_aantal_soorten <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% distinct(seizoen, locatie, soort) %>% count(seizoen, locatie, name = "soorten") %>% bind_rows(data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% distinct(locatie, soort) %>% count(locatie, name = "soorten") %>% mutate(seizoen = "totaal over seizoenen")) %>% bind_rows(data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% distinct(seizoen, soort) %>% count(seizoen, name = "soorten") %>% mutate(locatie = "totaal over locaties")) %>% bind_rows(data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% distinct(soort) %>% @@ -642,6 +687,7 @@ sheets[["aantal_soorten"]] <- tabel_aantal_soorten tabel_gevangen_soorten <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% mutate(seizoen_locatie = factor(paste(seizoen, locatie, sep = "_"), @@ -666,6 +712,7 @@ sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten (soorten_historisch <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar != laatste_jaar, aantal > 0) %>% distinct(soort) %>% @@ -674,6 +721,7 @@ sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten (soorten_recent <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(jaar == laatste_jaar, aantal > 0) %>% distinct(soort) %>% @@ -685,6 +733,7 @@ sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten data_soorten_nieuw <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% left_join(locatie_scheldezone) %>% filter(jaar == laatste_jaar, aantal > 0, @@ -712,23 +761,23 @@ relatief_aantal_laatste_jaar <- data_fuiken %>% filter(jaar == laatste_jaar) %>% group_by(seizoen, locatie) %>% - mutate(relatief_aantal = aantal/sum(aantal), - relatief_gewicht = gewicht/sum(gewicht)) %>% + mutate(relatief_aantal = aantal/sum(aantal, na.rm = TRUE), + relatief_gewicht = gewicht/sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(soort) %>% # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% mutate(soort2 = case_when( - any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + any(relatief_aantal[!is.na(relatief_aantal)] >= prop_lim | relatief_gewicht[!is.na(relatief_gewicht)] >= prop_lim) ~ soort, TRUE ~ "rest" )) %>% ungroup() %>% group_by(seizoen, locatie, soort2) %>% - summarise(aantal = sum(aantal)) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% ungroup() %>% group_by(seizoen, locatie) %>% mutate(soort2 = soort2, - aantal = round(aantal/sum(aantal)*100)) %>% + aantal = round(aantal/sum(aantal, na.rm = TRUE)*100)) %>% ungroup() %>% rename(soort = soort2) %>% mutate(soort = factor(soort, @@ -776,23 +825,23 @@ relatief_gewicht_laatste_jaar <- data_fuiken %>% filter(jaar == laatste_jaar) %>% group_by(seizoen, locatie) %>% - mutate(relatief_aantal = aantal/sum(aantal), - relatief_gewicht = gewicht/sum(gewicht)) %>% + mutate(relatief_aantal = aantal/sum(aantal, na.rm = TRUE), + relatief_gewicht = gewicht/sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(soort) %>% # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% mutate(soort2 = case_when( - any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + any(relatief_aantal[!is.na(relatief_aantal)] >= prop_lim | relatief_gewicht[!is.na(relatief_gewicht)] >= prop_lim) ~ soort, TRUE ~ "rest" )) %>% ungroup() %>% group_by(seizoen, locatie, soort2) %>% - summarise(gewicht = sum(gewicht)) %>% + summarise(gewicht = sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(seizoen, locatie) %>% mutate(soort2 = soort2, - gewicht = round(gewicht/sum(gewicht)*100)) %>% + gewicht = round(gewicht/sum(gewicht, na.rm = TRUE)*100)) %>% ungroup() %>% rename(soort = soort2) %>% mutate(soort = factor(soort, @@ -855,6 +904,7 @@ sheets_figuren[["relatief_gewicht_laatste_jaar"]] <- gemiddeld_diversiteit_EMSE <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% left_join(locatie_scheldezone) %>% filter(in_indeling) %>% filter(aantal > 0) %>% @@ -1688,6 +1738,7 @@ ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_zoet.jpg"), width = 6, relatieve_aantallen_salgroep <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_funcgroep)) %>% left_join(locatie_scheldezone) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep) %>% @@ -1787,7 +1838,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 15, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 15, height = 8, bg = "white", + create.dir = TRUE) ggp_all <- @@ -1819,7 +1871,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 15, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 15, height = 8, bg = "white", + create.dir = TRUE) ``` @@ -1828,6 +1881,7 @@ ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_sal relatieve_aantallen_dieet <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_funcgroep)) %>% left_join(locatie_scheldezone) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, dieet) %>% @@ -1863,18 +1917,41 @@ relatieve_aantallen_dieet <- dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) +# data_split <- +# relatieve_aantallen_dieet %>% +# group_by(dieet) %>% +# nest() + data_split <- relatieve_aantallen_dieet %>% + mutate(soort = str_replace(soort, "grondel", "gr.")) %>% + mutate(soort = str_replace(soort, "kleine", "kl.")) %>% + mutate(soort = str_replace(soort, "grote", "gr.")) %>% + mutate(soort = str_replace(soort, "driedoornige", "dried.")) %>% + mutate(soort = str_replace(soort, "tiendoornige", "tiend.")) %>% + mutate(soort = str_replace(soort, "steur", "st.")) %>% + mutate(soort = str_replace(soort, "europese meerval", "meerval")) %>% group_by(dieet) %>% nest() +my_pal_wes_kort <- my_pal_wes +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grondel", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "kleine", "kl.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grote", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "driedoornige", "dried.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "tiendoornige", "tiend.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "steur", "st.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "europese meerval", "meerval") + + data_split <- data_split %>% mutate(legend = map2(dieet, data, function(ind, dat) { pal_split <- - my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + # my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + my_pal_wes_kort[names(my_pal_wes_kort) %in% unique(dat$soort)] plt <- dat %>% ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + @@ -1927,7 +2004,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white", + create.dir = TRUE) ggp_all <- @@ -1959,7 +2037,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white", + create.dir = TRUE) ``` @@ -1970,6 +2049,8 @@ ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_die gemiddeld_diversiteit_salgroep <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_funcgroep)) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% left_join(locatie_scheldezone) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep) %>% @@ -2009,7 +2090,8 @@ gemiddeld_diversiteit_salgroep %>% theme(axis.text = element_text(size = 8), axis.text.x = element_text(angle = 90, vjust = 0.5)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7, + create.dir = TRUE) ``` @@ -2018,6 +2100,8 @@ ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), wid gemiddeld_diversiteit_dieet <- data_fuiken %>% + filter(!(soort %in% soorten_niet_in_funcgroep)) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% left_join(locatie_scheldezone) %>% filter(aantal > 0, !is.na(dieet)) %>% @@ -2058,7 +2142,8 @@ gemiddeld_diversiteit_dieet %>% theme(axis.text = element_text(size = 8), axis.text.x = element_text(angle = 90, vjust = 0.5)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6, + create.dir = TRUE) ``` @@ -2108,12 +2193,14 @@ meta_data <- laatste_jaar = laatste_jaar, aantal_soorten = data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(!is.na(aantal), aantal > 0) %>% distinct(soort) %>% nrow(), aantal_soorten_laatste_jaar = data_fuiken %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(!is.na(aantal), aantal > 0, jaar == laatste_jaar) %>% diff --git a/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd b/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd index d02d30d..bebb5c7 100644 --- a/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd +++ b/moneos_2025/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd @@ -473,7 +473,8 @@ aantal_soorten_seizoen_locatie %>% facet_grid(seizoen ~ locatie) + theme(strip.text = element_text(size = 12)) -ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8) +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8, + create.dir = TRUE) aantal_soorten_seizoen <- @@ -508,7 +509,8 @@ aantal_soorten_seizoen %>% fill = "jaar", color = "jaar") -ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5) +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5, + create.dir = TRUE) aantal_soorten_locatie <- @@ -559,7 +561,8 @@ aantal_soorten_locatie %>% fill = "jaar", color = "jaar") -ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5) +ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5, + create.dir = TRUE) aantal_soorten_totaal <- @@ -584,7 +587,8 @@ aantal_soorten_totaal %>% guides(fill="none", color = "none") -ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4) +ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4, + create.dir = TRUE) sheets_figuren[["aantal_soorten_seizoen_locatie"]] <- @@ -737,18 +741,18 @@ relatief_aantal_laatste_jaar <- data_ankerkuil %>% filter(jaar == laatste_jaar) %>% group_by(seizoen, locatie) %>% - mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), - relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal, na.rm = TRUE), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(soort) %>% - mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar[!is.na(relatief_aantal_laatste_jaar)] >= prop_lim) | any(relatief_gewicht_laatste_jaar[!is.na(relatief_gewicht_laatste_jaar)] >= prop_lim), soort, "rest")) %>% ungroup() %>% group_by(seizoen, locatie, soort2) %>% - summarise(aantal = sum(aantal)) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% ungroup() %>% group_by(seizoen, locatie) %>% mutate(soort2 = soort2, - aantal = round(aantal/sum(aantal)*100)) %>% + aantal = round(aantal/sum(aantal, na.rm = TRUE)*100)) %>% ungroup() %>% rename(soort = soort2) %>% mutate(soort = factor(soort, @@ -790,7 +794,8 @@ relatief_aantal_laatste_jaar %>% # legend.position = "bottom", legend.title = element_blank()) -ggsave(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) +ggsave(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg"), + create.dir = TRUE) ``` @@ -803,18 +808,18 @@ relatief_gewicht_laatste_jaar <- data_ankerkuil %>% filter(jaar == laatste_jaar) %>% group_by(seizoen, locatie) %>% - mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), - relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal, na.rm = TRUE), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(soort) %>% - mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar[!is.na(relatief_aantal_laatste_jaar)] >= prop_lim) | any(relatief_gewicht_laatste_jaar[!is.na(relatief_gewicht_laatste_jaar)] >= prop_lim), soort, "rest")) %>% ungroup() %>% group_by(seizoen, locatie, soort2) %>% - summarise(gewicht = sum(gewicht)) %>% + summarise(gewicht = sum(gewicht, na.rm = TRUE)) %>% ungroup() %>% group_by(seizoen, locatie) %>% mutate(soort2 = soort2, - gewicht = round(gewicht/sum(gewicht)*100)) %>% + gewicht = round(gewicht/sum(gewicht, na.rm = TRUE)*100)) %>% ungroup() %>% rename(soort = soort2) %>% mutate(soort = factor(soort, @@ -856,7 +861,8 @@ relatief_gewicht_laatste_jaar %>% # legend.position = "bottom", legend.title = element_blank()) -ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) +ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg"), + create.dir = TRUE) ``` @@ -889,10 +895,10 @@ gemiddeld_diversiteit_EMSE <- filter(in_indeling) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% - summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% - mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub, na.rm = TRUE)) %>% summarise(N = n(), H_sh = -sum(relatief_aantal*log(relatief_aantal)), H_gs = 1-sum(relatief_aantal^2), @@ -928,7 +934,8 @@ gemiddeld_diversiteit_EMSE %>% facet_grid(indeling ~ scheldezone, scales = "free_y") + theme(axis.text = element_text(size = 8)) -ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6) +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6, + create.dir = TRUE) gemiddeld_diversiteit_EMSE %>% filter(str_detect(salgroep, "diadr")) %>% @@ -951,7 +958,8 @@ gemiddeld_diversiteit_EMSE %>% facet_grid(indeling ~ scheldezone, scales = "free_y") + theme(axis.text = element_text(size = 8)) -ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6) +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6, + create.dir = TRUE) gemiddeld_diversiteit_EMSE %>% filter(str_detect(salgroep, "zoet")) %>% @@ -974,7 +982,8 @@ gemiddeld_diversiteit_EMSE %>% facet_grid(indeling ~ scheldezone, scales = "free_y") + theme(axis.text = element_text(size = 8)) -ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6) +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6, + create.dir = TRUE) ``` @@ -989,12 +998,12 @@ relatieve_aantallen_EMSE <- filter(in_indeling) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% - summarise(aantal_per_kub = mean(aantal_per_kub), - gewicht_per_kub = mean(gewicht_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = mean(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% - mutate(aantal_per_kub_tot = sum(aantal_per_kub), - gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub_tot = sum(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% @@ -1004,8 +1013,8 @@ relatieve_aantallen_EMSE <- mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% ungroup() %>% group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% - summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), - gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot, na.rm = TRUE), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot, na.rm = TRUE), aantal_per_kub = sum(aantal_per_kub), gewicht_per_kub = sum(gewicht_per_kub), relatief_aantal = aantal_per_kub/aantal_per_kub_tot, @@ -1080,7 +1089,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) data_split <- @@ -1139,7 +1149,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.1,1,0.05)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) data_split <- @@ -1198,7 +1209,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) ``` @@ -1264,7 +1276,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) data_split <- @@ -1324,7 +1337,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.1,1,0.05)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) data_split <- @@ -1384,7 +1398,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white", + create.dir = TRUE) ``` @@ -1415,8 +1430,8 @@ data_sleutelsoorten_EMSE <- left_join(sleutelsoorten_EMSE %>% select(soort, scheldezone_rap = scheldezone)) %>% # filter(map2_lgl(scheldezone_rap, scheldezone, ~str_detect(.x, .y))) %>% group_by(jaar, soort, salgroep, scheldezone) %>% - summarise(aantal_per_kub = mean(aantal_per_kub), - gewicht_per_kub = mean(gewicht_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = mean(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) @@ -1445,7 +1460,8 @@ data_sleutelsoorten_EMSE %>% theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), legend.position = "top") -ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8, + create.dir = TRUE) data_sleutelsoorten_EMSE %>% @@ -1464,7 +1480,8 @@ data_sleutelsoorten_EMSE %>% theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), legend.position = "top") -ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7, + create.dir = TRUE) data_sleutelsoorten_EMSE %>% @@ -1484,7 +1501,8 @@ data_sleutelsoorten_EMSE %>% theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), legend.position = "top") -ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8, + create.dir = TRUE) ``` @@ -1499,12 +1517,12 @@ relatieve_aantallen_salgroep <- filter(in_indeling) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep) %>% - summarise(aantal_per_kub = mean(aantal_per_kub), - gewicht_per_kub = mean(gewicht_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = mean(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, salgroep) %>% - mutate(aantal_per_kub_tot = sum(aantal_per_kub), - gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub_tot = sum(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% @@ -1514,10 +1532,10 @@ relatieve_aantallen_salgroep <- mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% ungroup() %>% group_by(jaar, scheldezone, soort, salgroep) %>% - summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), - gewicht_per_kub_tot = mean(gewicht_per_kub_tot), - aantal_per_kub = sum(aantal_per_kub), - gewicht_per_kub = sum(gewicht_per_kub), + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot, na.rm = TRUE), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot, na.rm = TRUE), + aantal_per_kub = sum(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = sum(gewicht_per_kub, na.rm = TRUE), relatief_aantal = aantal_per_kub/aantal_per_kub_tot, relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% ungroup() %>% @@ -1596,7 +1614,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 14, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 14, height = 8, bg = "white", + create.dir = TRUE) ggp_all <- @@ -1628,7 +1647,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 14, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 14, height = 8, bg = "white", + create.dir = TRUE) ``` @@ -1641,12 +1661,12 @@ relatieve_aantallen_dieet <- filter(in_indeling) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, dieet) %>% - summarise(aantal_per_kub = mean(aantal_per_kub), - gewicht_per_kub = mean(gewicht_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = mean(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, dieet) %>% - mutate(aantal_per_kub_tot = sum(aantal_per_kub), - gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub_tot = sum(gewicht_per_kub, na.rm = TRUE)) %>% ungroup() %>% mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% @@ -1656,10 +1676,10 @@ relatieve_aantallen_dieet <- mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% ungroup() %>% group_by(jaar, scheldezone, soort, dieet) %>% - summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), - gewicht_per_kub_tot = mean(gewicht_per_kub_tot), - aantal_per_kub = sum(aantal_per_kub), - gewicht_per_kub = sum(gewicht_per_kub), + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot, na.rm = TRUE), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot, na.rm = TRUE), + aantal_per_kub = sum(aantal_per_kub, na.rm = TRUE), + gewicht_per_kub = sum(gewicht_per_kub, na.rm = TRUE), relatief_aantal = aantal_per_kub/aantal_per_kub_tot, relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% ungroup() %>% @@ -1770,7 +1790,8 @@ plot_grid(ggp_all, ncol = 1, rel_heights = c(0.07,1,0.1)), ncol = 3, rel_widths = c(1.4,0.05,0.6)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white", + create.dir = TRUE) ``` @@ -1785,10 +1806,10 @@ gemiddeld_diversiteit_salgroep <- filter(!(soort %in% soorten_niet_in_aantal)) %>% filter(aantal > 0) %>% group_by(jaar, scheldezone, soort, salgroep) %>% - summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, salgroep) %>% - mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub, na.rm = TRUE)) %>% summarise(N = n(), H_sh = -sum(relatief_aantal*log(relatief_aantal)), H_gs = 1-sum(relatief_aantal^2), @@ -1821,7 +1842,8 @@ gemiddeld_diversiteit_salgroep %>% theme(axis.text = element_text(size = 8), axis.text.x = element_text(angle = 90, vjust = 0.5)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7, + create.dir = TRUE) ``` @@ -1835,10 +1857,10 @@ gemiddeld_diversiteit_dieet <- filter(aantal > 0, !is.na(dieet)) %>% group_by(jaar, scheldezone, soort, dieet) %>% - summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + summarise(aantal_per_kub = mean(aantal_per_kub, na.rm = TRUE)) %>% ungroup() %>% group_by(jaar, scheldezone, dieet) %>% - mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub, na.rm = TRUE)) %>% summarise(N = n(), H_sh = -sum(relatief_aantal*log(relatief_aantal)), H_gs = 1-sum(relatief_aantal^2), @@ -1871,7 +1893,8 @@ gemiddeld_diversiteit_dieet %>% theme(axis.text = element_text(size = 8), axis.text.x = element_text(angle = 90, vjust = 0.5)) -ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6, + create.dir = TRUE) ``` diff --git a/moneos_2025/moneos_2025.Rproj b/moneos_2025/moneos_2025.Rproj index 70bf802..3bcc6a9 100644 --- a/moneos_2025/moneos_2025.Rproj +++ b/moneos_2025/moneos_2025.Rproj @@ -15,3 +15,5 @@ LaTeX: XeLaTeX BuildType: Website WebsitePath: 150_geintegreerd_rapport + +MarkdownWrap: Sentence From 7aa0935c5f2b8767d95975d73745b67cfddba844 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Wed, 16 Jul 2025 16:20:05 +0200 Subject: [PATCH 03/11] Aanpassingen tot en met diadrome soorten ankerkuil. --- .../090_vissen_inleiding_en_methode.Rmd | 5 +- .../091_vissen_ankerkuil.Rmd | 47 ++++++++++--------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd index 81a84aa..483da09 100644 --- a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -57,13 +57,14 @@ meta_data <- read_delim(paste0(pad_data, "vissen_meta_data.csv"), delim = ";") -for(i in 1:nrow(meta_data)){ + for(i in 1:nrow(meta_data)){ ##first extract the object value tempobj=meta_data$waarde[i] ##now create a new variable with the original name of the list item eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) } + soortenlijst <- read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") %>% @@ -110,7 +111,7 @@ aantal_soorten_enkel_ankerkuil <- Fichenummer: FICHE S-DS-V-004a -- Vissen (KRW) -**Joost Vanoverbeke, Erika Van den Bergh, Gunther Van Ryckegem, Rhea Measle, Gerlinde Van Thuyne, Merlijn Jocque** +**Joost Vanoverbeke, Gunther Van Ryckegem, Rhea Measle, Gerlinde Van Thuyne, Merlijn Jocque** ## Inleiding diff --git a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd index eefdf74..1b59504 100644 --- a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd @@ -73,11 +73,13 @@ for(i in 1:nrow(meta_data)){ #### Soortenrijkdom in `r laatste_jaar` We vingen `r aantal_soorten_laatste_jaar` vissoorten in `r laatste_jaar`. +Dit is het laagste aantal tot zover in de opvolging van het visbestand. Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:091-tabel-overzicht-soorten). -In de zone met sterke saliniteitsgradiënt (Doel en Antwerpen) werden er meer soorten gevangen dan in de oligohaliene (Steendorp) en zoetwater (Branst) zone (Tabel \@ref(tab:091-tabel-aantal-soorten)). +In de zone met sterke saliniteitsgradiënt (Doel en Antwerpen) werden er gemiddeld gezien meer soorten gevangen dan in de oligohaliene (Steendorp) en zoetwater (Branst) zone (Tabel \@ref(tab:091-tabel-aantal-soorten)). Over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden er inderdaad systematisch meer soorten gevangen in deze zone dan in de oligohaliene en zoete zone (Figuur \@ref(fig:091-figuur-aantal-soorten-locatie-historisch)). +In Antwerpen (zone met sterke saliniteitsgradiënt) werden er in `r laatste_jaar` opvallend weining soorten gevangen. De turnover van soorten tussen seizoenen op elke locatie bedraagt tot een derde van de gevangen soorten. -Het totaal aantal soorten jaarlijks gevangen in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar`-`r laatste_jaar` varieert rond de 40, met een maximum (46) in 2017 en een minimum (36) in 2020. +Het totaal aantal soorten jaarlijks gevangen in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar`-`r laatste_jaar` varieert rond de 40, met een maximum (46) in 2017 en een minimum (34) in 2024. De turnover in soorten tussen locaties bedraagt tot een kwart van het totaal aantal soorten. ```{r 091-tabel-overzicht-soorten} @@ -154,19 +156,19 @@ We analyseren alle vangstgegevens van `r laatste_jaar`. Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. Juveniele haring en sprot werden samen geregistreerd als "haringachtigen" . In de zomer was het overgrote deel van de haringachtigen haring, in het najaar werden in Doel een merendeel sprot gevangen. + Uit deze analyse blijkt dat de relatieve abundantie van soorten zowel seizoenaal als ruimtelijk verschilt (Figuur \@ref(fig:091-figuur-relatief-aantal)). -In Doel en Antwerpen (zone met sterke saliniteitsgradiënt) zijn haringachtigen dominant in alle seizoenen van `r laatste_jaar`. -Ook in het voorjaar in Steendorp zijn haringachtigen dominant. -Spiering is nog minder omnipresent dan in 2022 en enkel dominant in Steendorp in de zomer. -In 2022 domineerden spieringen nog de vangstaantallen in drie afvissingen in Steendorp en Branst (zoetwater). -In het najaar neemt brakwatergrondel het over in Steendorp, vergelijkbaar met vorig jaar. -Brakwatergrondel is minder dominant aanwezig in vergelijking met 2022, vooral in Branst, waar bot in `r laatste_jaar` dominant aanwezig is in het voorjaar en dikkopje het overneemt in de zomer en het najaar. - -Uitgedrukt in biomassa worden gelijkaardige patronen geobserveerd voor haringachtigen in Doel en Antwerpen. -Spiering treedt meer op de voorgrond in Steendorp maar met toenemende aanwezigheid van brakwatergrondel en dikkopje in het najaar. -In Branst staat fint in voor een groot deel van de biomassa in het voorjaar, spiering in de zomer en dikkopje in het najaar (Figuur \@ref(fig:091-figuur-relatieve-biomassa)). -Ook snoekbaars is duidelijk aanwezig in de biomassa van voorjaar en zomer in Steendorp en Branst. +In de zone met sterke saliniteitsgradiënt zijn spiering (Doel) en brakwatergrondel (Antwerpen) dominant in het voorjaar van `r laatste_jaar`. +In het najaar komt op deze locaties vooral sprot veel voor, met daarnaast een duidelijke aanwezigheid van spiering en haring. +Spiering is alomtegenwoordig en dominant in Steendorp tjijdens het voorjaar en de zomer, en ook in Branst gedurende de zomer. +In het najaar neemt brakwatergrondel het over in Steendorp en ook in Branst, vergelijkbaar met vorig jaar. +Bot is dominant in Branst tijdens de zomer en duidelijk aanwezig in Steendorp en Antwerpen. + +Uitgedrukt in biomassa worden deze patronen versterkt en duidelijk zichtbaar met een bevestiging van de alomtegenwoordigheid van spiering in zowel de zone met sterke saliniteitsgradient (Doel, Antwerpen) als in de oligohaliene zone (Steendorp) in het voorjaar. +De dominantie van spiering verschuift in het jaar bovenstrooms naar de oligohaliene (Steendorp) en zoete (Branst) zone tijdens de zomer en dan terug naar de polyhaliene (Antwerpen) en oligohaliene zone (Steendorp) in het najaar. +De zomer en het najaar in de polyhaliene zone worden verder gedomineerd door haring sprot en haringachtigen. +In Branst staat karper in voor een groot deel van de biomassa in het voorjaar (Figuur \@ref(fig:091-figuur-relatieve-biomassa)), en treedt brakwatergrondel op de voorgrond in het najaar. ```{r 091-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} @@ -204,20 +206,18 @@ Figuur \@ref(fig:091-figuur-aantallen-marien-EMSE) geeft per saliniteitszone (EM Benthivore soorten overheersen naar aantal en biomassa, vooral in de zoete zone. In de zone met sterke saliniteitsgradiënt overheersen planktivoren in `r laatste_jaar`. -Dikkopje en brakwatergrondel zijn veruit de meest talrijke benthivore soorten in deze groep. -De grootste aantallen vonden we in de zoetwaterzone in Branst (samen 600 individuen per 1000m³, sterk aanleunend bij de piek in 2018). -Enkel in 2020 waren ze meest talrijk in het oligohalien. +Brakwatergrondel is veruit de meest talrijke benthivore soort. -Omnivore mariene en estuariene soorten worden qua aantallen in het verleden gedomineerd door kleine zeenaald in de zone met sterke saliniteitsgradiënt, maar in `r laatste_jaar` domineert steenbolk. +Omnivore mariene en estuariene soorten worden qua aantallen in het verleden gedomineerd door kleine zeenaald in de zone met sterke saliniteitsgradiënt, maar in `r laatste_jaar` domineert zeebaars. In het oligohalien en zoetwater komt hoofdzakelijk juveniele zeebaars voor die daar komt opgroeien. -De aantallen zijn beduidend lager dan voor de benthivore soorten van deze groep (\< 5 individuen per 1000m³). -De laatste jaren wordt deze soortengroep minder gevangen dan in de periode voor 2018. +De aantallen zijn beduidend lager dan voor de benthivore soorten van deze groep (\< 4 individuen per 1000m³), maar hoger dan vorig jaar. -Piscivore estuariene en mariene soorten volgens de EMSE indeling komen in de Zeeschelde niet voor, de éénmalige vangst van een smelt uitgezonderd. -In realiteit gedragen ook zeebaars, steenbolk en zeeforel zich hoofdzakelijk piscivoor in de Zeeschelde. +Piscivore estuariene en mariene soorten volgens de EMSE indeling komen in de Zeeschelde niet voor, de éénmalige vangst van een smelt in 2021 uitgezonderd. +In realiteit gedragen ook zeebaars en zeeforel zich hoofdzakelijk piscivoor in de Zeeschelde. Planktivore individuen van de groep estuarien residente en mariene migranten zijn meest talrijk in de zone met sterke saliniteitsgradiënt, met een uitschieter tot meer dan 200 individuen per 1000m³ in 2022, maar ze zijn toch ook tot in de zoete zone terug te vinden. Het gaat hier vooral om juveniele haring en sprot, mariene soorten die de luwte en voedselrijkdom van het estuarium opzoeken om op te groeien. +In `r laatste_jaar` domineert sprot. De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:091-figuur-biomassa-marien-EMSE)). De omnivore mariene en estuariene soorten vertonen echter wel een grotere soortendiversiteit qua biomassa dan qua aantallen in de zone met sterke saliniteitsgradiënt. @@ -226,7 +226,8 @@ De dominatie van zeenaald in bepaalde jaren is een stuk minder uitgesproken in d De sterke dominantie van één of twee soorten qua aantallen binnen elke soortgroep is ook duidelijk zichtbaar in Figuur \@ref(fig:091-figuur-diversiteit-marien-EMSE). Zelfs als er in totaal (S) 5 of meer soorten voorkomen in een groep wordt deze meestal door slechts één of twee soorten gedomineerd (D). Enkel voor de omnivore mariene en estuariene soorten kan de diversiteit oplopen tot 4-6. -Soortenaantal en diversiteit vertonen geen uitgesproken trends binnen de soortgroepen, maar zijn relatief stabiel. +Over de jaren (sinds 2021) is de geleidelijke afname in zowel het aantal soorten als de soortendiversiteit van omnivore soorten in de zone met sterke saliniteitsgradiënt wel opvallend en dient nauwlettend opgevolgd te worden. +Soortenaantal en diversiteit vertonen verder weinig uitgesproken trends binnen de soortgroepen, en zijn relatief stabiel. ```{r 091-figuur-aantallen-marien-EMSE, fig.cap=aantallen_marien_EMSE, out.width="110%"} @@ -272,7 +273,7 @@ De diadrome soorten in de Zeeschelde zijn dus voornamelijk omnivoor en deze func Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 4000-6000 individuen per 1000m³ in 2014. In recente jaren zijn de aantallen een stuk lager (50-600 individuen per 1000m³). Met uitzondering van een dip rond 2016 was de biomassa (Figuur \@ref(fig:091-figuur-biomassa-diadroom-EMSE)) aan spiering in voorgaande jaren relatief stabiel. -In 2022 en `r laatste_jaar` zijn de aantallen en biomassa aan gevangen spiering echter opvallend lager, vooral in de zoetwater zone. +In 2022, 2023 en `r laatste_jaar` zijn de aantallen en biomassa aan gevangen spiering echter opvallend lager, vooral in de zoetwater zone. Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. Deze soort plant zich inderdaad voort stroomopwaarts in de zoete zone met korte verblijftijd, groeit op in het estuarium en trekt na enkele jaren naar zee. Om het rekruteringssucces te bepalen moet echter de grootteklasse verdeling per seizoen en per locatie geanalyseerd worden. From 517e2168787a8ac5f1a2ac27aa87fd90ea614c24 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Wed, 16 Jul 2025 18:56:57 +0200 Subject: [PATCH 04/11] tot juist voor diadrome soorten - fuikvangsten --- .../091_vissen_ankerkuil.Rmd | 62 +++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd index 1b59504..bc414b0 100644 --- a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd @@ -271,7 +271,7 @@ Aantallen, biomassa en dominantie zijn dus sterk variabel in de tijd en per sali De diadrome soorten in de Zeeschelde zijn dus voornamelijk omnivoor en deze functionele groep is zo sterk gedomineerd door spiering (Figuur \@ref(fig:091-figuur-aantallen-diadroom-EMSE)) dat bot, driedoornige stekelbaars, fint en paling, die nochtans ook zeer regelmatig gevangen worden, niet zichtbaar zijn op de figuur of zelfs niet eens apart vermeld worden maar samen met nog enkele andere, minder algemene soorten, onder 'rest' verwerkt worden. Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 4000-6000 individuen per 1000m³ in 2014. -In recente jaren zijn de aantallen een stuk lager (50-600 individuen per 1000m³). +Desondanks de dominantie van spiering zijn in recente jaren de aantallen een stuk lager (50-600 individuen per 1000m³). Met uitzondering van een dip rond 2016 was de biomassa (Figuur \@ref(fig:091-figuur-biomassa-diadroom-EMSE)) aan spiering in voorgaande jaren relatief stabiel. In 2022, 2023 en `r laatste_jaar` zijn de aantallen en biomassa aan gevangen spiering echter opvallend lager, vooral in de zoetwater zone. Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. @@ -322,7 +322,7 @@ Zoetwater soorten zijn meest talrijk in de zoetwaterzone waar de aantallen en bi Binnen de zoetwatersoorten zijn omnivoren de meest talrijke en de meest soortenrijke functionele groep en ze vertegenwoordigen ook de grootste biomassa. Snoekbaars is dominant in deze groep, zowel in aantallen als in biomassa. -De aantallen daalden voor het tweede jaar op rij, maar de biomassa bleef de laatste jaren grotendeels constant, er werden dus relatief meer grotere exemplaren gevangen. +De aantallen en biomassa bleef in `r laatste_jaar` vergelijkbaar met vorig jaar. Benthivore zoetwater soorten worden qua aantallen gedomineerd door brasem, tiendoornige stekelbaars en blauwbandgrondel. Qua gewicht is enkel brasem dominant in deze functionele groep. @@ -334,7 +334,7 @@ Na een uitschieter in 2021 zijn aantal en gewicht in `r laatste_jaar` weer gedaa Planktivore zoetwatersoorten komen in de Zeeschelde niet voor. -Zoals voor de mariene, estuariene en diadrome soorten worden ook de zoetwater soortengroepen grotendeels gedomineerd door één à twee soorten (D), hoewel vaak meer soorten gevangen worden (S) (Figuur \@ref(fig:091-figuur-diversiteit-zoetwater-EMSE)). +Zoals voor de mariene, estuariene en diadrome soorten worden ook de zoetwater soortengroepen grotendeels gedomineerd door één à twee soorten (lage D), hoewel vaak meer soorten gevangen worden (S) (Figuur \@ref(fig:091-figuur-diversiteit-zoetwater-EMSE)). ```{r 091-figuur-aantallen-zoetwater-EMSE, fig.cap=aantallen_zoetwater_EMSE, out.width="110%"} @@ -391,16 +391,16 @@ De overige soorten komen slechts in zeer kleine aantallen voor. Sprot wordt eveneens in vrij grote aantallen gevangen maar werd niet als sleutelsoort aangeduid. - Brakwatergrondel komt in de grootste aantallen voor in het zoetwater en vertoont piekdensiteiten rond 2018. - In `r laatste_jaar` zijn de aantallen waargenomen in de ankerkuil vangsten gemiddeld. + Na een dieptepunt in 2019 zetten de waargenomen aantallen in `r laatste_jaar` een continue stijging verder. -- Dikkopje bereikt in `r laatste_jaar` recordaantallen met \>300 individuen per 1000m³ in zoetwater. - Vorige pieken rond 50 individuen per 1000m³ in 2018 en 2020 zijn waargenomen in oligohalien. +- Dikkopje is in `r laatste_jaar` aanwezig in lage aantallen. + Een groot contrast met recordaantallen van \>300 individuen per 1000m³ in zoetwater in 2023. - Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. - De aantallen zijn relatief stabiel en tonen op eerste zicht een golvende beweging, met piekdensiteiten in 2014, 2018 en 2022. + De aantallen blijven in `r laatste_jaar` afnemen en tonen op eerste zicht een golvende beweging, met piekdensiteiten in 2014, 2018 en 2022. - Zeebaars wordt vooral waargenomen in de zoetwater zone en in het oligohalien. - In vergelijking met de periode 2012-2017 komt er nu weinig zeebaars voor in de Zeeschelde. + Na een sporadische aanwezigheid in de periode 2018-2023 is er in `r laatste_jaar` een duidelijke toename van zeebaars in de Zeeschelde. ```{r 091-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} @@ -421,16 +421,14 @@ Paling wordt slechts in kleine aantallen gevangen met de ankerkuil, maar is qua - Bot komt voor in alle drie de scheldezones waar afvissingen met ankerkuil worden gedaan, maar met over het algemeen de hoogste aantallen in het zoetwater. - Aantallen bot varieren van jaar tot jaar, met in `r laatste_jaar` de hoogste aantallen tot nu toe. + Aantallen bot varieren van jaar tot jaar, met in `r laatste_jaar` een afname sinds vorig jaar doch nog altijd met hoge aantallen. -- Fint aantallen vertoonden pieken in 2012, 2015 en 2017. - Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:091-figuur-relatief-aantal)). +- Fint aantallen vertoonden pieken in 2012, 2015 en 2017 en ook terug een piek in `r laatste_jaar`. Sterke variatie in de aantallen kan zowel aan de paaitrek als aan het rekruteringssucces te wijten zijn. Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. - Paling wordt vooral gevangen in het oligohalien en zoetwater. - De aantallen vertonen een licht dalende trend die lijkt gestabiliseerd in `r laatste_jaar`. - Deze trend is minder duidelijk in de biomassa die vrij sterk varieert van jaar tot jaar. + De aantallen blijven stabiel in `r laatste_jaar`. - Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:091-figuur-relatief-aantal), \@ref(fig:091-figuur-relatieve-biomassa), \@ref(fig:091-figuur-aantallen-diadroom-EMSE) en \@ref(fig:091-figuur-biomassa-diadroom-EMSE)). Deze soort vertoonde een heel sterke piek in aantallen in 2014. @@ -452,13 +450,12 @@ knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadr De meest voorkomende sleutelsoorten voor de zoetwatersoorten zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:091-figuur-zoetwater-sleutelsoorten)). - Na de forse toename van blankvoorn in het zoetwater in 2021 vertoont deze soort in `r laatste_jaar` opnieuw lagere aantallen. - - Brasem vertoont een duidelijke toename in aantallen in het zoetwater vanaf 2016 in vergelijking met de jaren ervoor. - In 2022 en `r laatste_jaar` is er nog een extra toename in het zoetwater. + In `r laatste_jaar` is er een sterke daling, vooral in het zoetwater. - Ook snoekbaars vertoont een duidelijke toename in aantallen vanaf 2016 met een piek in 2021 waarna de aantallen terug afnemen. - Deze soort komt niet alleen voor in het zoetwater maar ook vaak in het oligohalien (waar de aantallen sinds 2021 ook terug afnemen) en zelfs in de zone met sterke saliniteitsgradiënt. + Deze soort komt niet alleen voor in het zoetwater maar ook vaak in het oligohalien, waar in `r laatste_jaar` de sterkste afname in aantallen is waargenomen, en zelfs in de zone met sterke saliniteitsgradiënt. ```{r 091-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} @@ -490,28 +487,29 @@ Men zou dus kunnen besluiten dat de densiteit van de vispopulaties in de Zeesche De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien habitat gebruik worden weergegeven in respectivelijk Figuur \@ref(fig:091-figuur-aantallen-habitat), Figuur \@ref(fig:091-figuur-biomassa-habitat) en Figuur \@ref(fig:091-figuur-diversiteit-habitat). Voor alle drie de estuariene habitat gebruik groepen zien we de laagste densiteiten in de zone met sterke saliniteitsgradiënt. -Diadrome vissen overheersen de aantallen in de ankerkuilvangsten, met vergelijkbare aantallen per m³ in de oligohaliene en zoete zone. -Die dominantie is echter hoofdzakelijk te wijten aan de grote aantallen en biomassa van spiering in voorgaande jaren. -De laatste twee jaar zijn de aantallen en biomassa een stuk lager en kunnen mariene en estuariene soorten zelfs domineren, waar die in het verleden met bijna een factor 10 minder gevist werden. - Zoetwatersoorten worden tenslotte in veel lagere aantallen gevangen, weliswaar met duidelijke toename van aantallen in stroomopwaartse richting. +Tien jaar geleden (2014) overheersden diadrome vissen de aantallen in de ankerkuilvangsten, met vergelijkbare aantallen per m³ in de oligohaliene en zoete zone. +Die dominantie was hoofdzakelijk te wijten aan de grote aantallen en biomassa van spiering in voorgaande jaren. +De laatste drie jaar zijn de aantallen en biomassa een stuk lager en overheersen mariene en estuariene soorten, waar die in het verleden met bijna een factor 10 minder gevist werden. +Zoetwatersoorten worden tenslotte in veel lagere aantallen gevangen, weliswaar met duidelijke toename van aantallen in stroomopwaartse richting. + Op basis van gemiddelde biomassa per m³ zijn de trends vergelijkbaar maar zijn de verschillen tussen estuariene habitat gebruik groepen veel kleiner. Het gaat dus voornamelijk om kleine, juveniele diadrome individuen en grotere, adulte zoetwatervissen. De estuarien residente soorten zijn middelgroot en alle leeftijdsklassen zijn aanwezig. -Spieringen zijn zonder meer de dominante trekvissen, zowel naar aantal als naar biomassa en dat geldt in alle saliniteitszones van de Zeeschelde . -De aantallen spiering zijn al een aantal jaren veel kleiner dan voorheen, in 2022 en `r laatste_jaar` echter zijn niet alleen de aantallen maar ook de biomassa's uitzonderlijk laag. +Spieringen zijn zonder meer de dominante trekvissen, zowel naar aantal als naar biomassa en dat geldt in alle saliniteitszones van de Zeeschelde. +De aantallen spiering zijn al een aantal jaren veel kleiner dan voorheen, in 2022, 2023 en `r laatste_jaar` echter zijn niet alleen de aantallen maar ook de biomassa's uitzonderlijk laag. Dit vergt nader onderzoek. -Snoekbaars is de dominante zoetwatersoort, eveneens in aantal en biomassa. +Snoekbaars is de dominante zoetwatersoort, zowel in aantal als biomassa. De dominantie is echter minder uitgesproken dan die van de spiering, o.a. ook omdat het aantal algemene soorten het grootst is in deze groep. Het beeld van mariene en estuariene soorten is iets complexer omdat hier in realiteit twee verschillende estuarien habitat gebruik gilden samengevoegd worden: estuarien residenten en mariene migranten die elk op een heel andere manier gebruik maken van het estuarien habitat. In de zoete zone met lange verblijftijd en in het oligohalien zijn brakwatergrondel en dikkopje, twee estuarien residente soorten, de meest talrijke soorten van deze gildengroep. -Afgezien van de uitzonderlijke piek in `r laatste_jaar` voor dikkopje en in 2018 voor brakwatergrondel schommelen de aantallen en biomassa's zonder uitgesproken trend te vertonen. +Afgezien van de uitzonderlijke piek in 2023 voor dikkopje is er vooral een graduele toename van aantallen en biomassa's van brakwaterrondel zichtbaar sinds 2019. -In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk. -Indien we naar de biomassa kijken winnen sprot en ook haring in 2022 en `r laatste_jaar` aan belang in de twee stroomafwaartse zones en zelfs in de zoete zone met lange verblijftijd. +In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk, evenals sprot in in 2022 en `r laatste_jaar`. +Gelijkaardige patronen zijn zichtbaar op basis van biomassa en zichtbaar tot in het oligohalien. Mariene migranten zoeken de beschutting en voedselrijkdom van het estuarium op tot in de zoetwater zone. De aantallen en biomassa's variëren sterk van jaar tot jaar. @@ -561,25 +559,25 @@ knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_sa De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weergegeven in respectievelijk Figuur \@ref(fig:091-figuur-aantallen-dieet), Figuur \@ref(fig:091-figuur-biomassa-dieet) en Figuur \@ref(fig:091-figuur-diversiteit-dieet). Qua trofische samenstelling overheersten in het verleden omnivoren de aantallen en ook de biomassa door toedoen van spiering, gevolgd door benthivoren, planktivoren en tenslotte een zeer kleine minderheid aan piscivoren. -zoals reeds vermeld is de dominantie van omnivoren (spiering) de laatste twee jaar echter grotendeels verdwenen. +zoals reeds vermeld is de dominantie van omnivoren (spiering) de laatste drie jaar echter grotendeels verdwenen. -Brakwatergrondel en dikkopje en in mindere mate brasem zijn de dominante benthivoren zowel in de aantallen als in de biomassa. +Brakwatergrondel en dikkopje en in mindere mate brasem zijn de dominante benthivoren zowel in aantallen als in biomassa. De gevangen hoeveelheden en de dominantie van brakwatergrondel en dikkopje stijgen beiden in stroomopwaartse richting in de vorige jaren. -In `r laatste_jaar` is dikkopje voor de eerste keer dominant in aantallen en biomassa over brakwatergrondel in zoetwater. +In `r laatste_jaar` is brakwatergrondel dominant in aantallen en biomassa in zoetwater. Spiering is de dominante omnivoor met veel hogere aantallen en biomassa dan snoekbaars en andere omnivoren. Dit moet echter genuanceerd worden. De overgrote meerderheid zijn planktivore juveniele spieringen. In het pelagiaal van de oligohaliene en zoete zeeschelde vinden we dus voornamelijk planktivore individuen. -In de zone met sterke saliniteitsgradiënt zijn haring en sprot de belangrijkste planktivoren, met een zeer opvallende piek in 2022. +In de zone met sterke saliniteitsgradiënt zijn haring en sprot de belangrijkste planktivoren, met een zeer opvallende piek in 2022 en ook een goede piek in `r laatste_jaar`. Ook in het oligohalien zijn ze nog redelijk talrijk aanwezig. Baars, rivierprik en zeeprik zijn de belangrijkste piscivoren. -In aantallen overheerst baars, met een opvallende piek in Branst (zoet lang) in 2021. +In aantallen overheerst baars. Pieken in de biomassa worden eerder veroorzaakt door occasionele vangsten van prikken, die gemiddeld veel groter zijn. Ook piscivorie in de waterkolom van de Zeeschelde is onderschat doordat de EMSE indeling in dieetgroepen geen rekening houdt met de dieetshift van dominante soorten. -Een groot aandeel van 'omnivore' biomassa betreft ook volwassen spieringen en snoekbaars, die zich in de Schelde voornamelijk piscivoor gedragen (eigen observatie). +Een groot aandeel van 'omnivore' biomassa betreft ook volwassen spieringen en snoekbaars, die zich in de Schelde voornamelijk piscivoor gedragen. Ook volwassen fint, winde, meerval, zeebaars, steenbolk en zeeforel zijn als piscivoor gekend. Omnivoren vormen de meest soortenrijke trofische groep, gevolgd door benthivoren, planktivoren en tenslotte piscivoren. From fb2a74e7e77e5584884b44115dc69f50bcaf00f1 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Thu, 17 Jul 2025 14:10:59 +0200 Subject: [PATCH 05/11] alles zonder visindex --- .../092_vissen_fuiken.Rmd | 62 ++++++++----------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd index ef8e346..154e24a 100644 --- a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -70,8 +70,8 @@ for(i in 1:nrow(meta_data)){ In `r laatste_jaar` werden `r aantal_soorten_laatste_jaar` vissoorten gevangen in de fuiken. Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:092-tabel-overzicht-soorten). -Opmerkelijk weinig soorten zijn gevangen in Antwerpen in `r laatste_jaar` (Tabel \@ref(tab:092-tabel-aantal-soorten); Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). -In vergelijking met de ankerkuil werden in elke zone minder soorten bovengehaald met de fuiken. +Opmerkelijk veel soorten zijn gevangen in Antwerpen en Paardenschor in `r laatste_jaar` (Tabel \@ref(tab:092-tabel-aantal-soorten); Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). +In vergelijking met de ankerkuil werden in elke zone minder soorten bovengehaald met de fuiken, behalve in Antwerpen. Over de seizoenen werden met de fuiken het grootste aantal soorten gevangen in de zomer en het najaar terwijl dat met de ankerkuil in het voorjaar en de zomer was. Totaal over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden meest soorten gevangen in de zone met sterke saliniteitsgradiënt (Zandvliet/Paardenschor \> Antwerpen) (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)) en daalt de soortenrijkdom in stroomopwaartse richting, met iets minder soorten in de oligohaliene zone (Steendorp), en het laagst aantal soorten in de zoetwaterzone met lange (Kastel) en korte (Appels, Overbeke) verblijftijd. @@ -161,21 +161,14 @@ Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% Deze analyse geeft aan dat de relatieve abundantie van de soorten zowel ruimtelijk als per seizoen verschilt (Figuur \@ref(fig:092-figuur-relatief-aantal)). Het patroon verschilt ook sterk van dat van de ankerkuilvangsten en geeft algemeen een meer divers beeld met minder uitgesproken dominantie van een aantal soorten. -In het voorjaar van `r laatste_jaar` overheersen zeebaars en bot de aantallen aan het Paardenschor. -In Antwerpen zijn dat vooral brakwatergrondel, blankvoorn en brasem. -In Steendorp wordt er naast blankvoorn ook relatief veel schol gevangen. -In de zoete zone overheersen brakwatergrondel, brasem, schol, baars en paling. -In de zomer worden overal redelijke aantallen bot en snoekbaars gevangen. -In de zone met sterke saliniteitsgradiënt aangevuld met haring, schol en steenbolk. -In de zoete zone is paling en blankvoorn meestal ook duidelijk aanwezig. -Dit beeld verandert compleet in het najaar. -In die periode overheerst brakwatergrondel de fuikvangsten van Antwerpen tot Appels. -In het Paardenschor is dit bot en in Overbeke is paling dominant. - -Uitgedrukt in biomassa overheerst snoekbaars, brasem en paling de zoete zone in het voorjaar, in de zone sterke saliniteitsgradiënt zijn dat ook snoekbaars, zeebaars, baars en bot. -In Kastel nemen ook optrekkende finten een belangrijk deel van de biomassa in. -Paling is op de meeste locaties dominant in de zomer, aangevuld met snoekbaars van Antwerpen tot Overbeke, met goede aanwezigheid van steenbolk in Paardeschor en karper in Overbeke (Figuur \@ref(fig:092-figuur-relatieve-biomassa)). -In het najaar blijft paling dominant op de meeste plaatsen behalve in Paardeschor en Kastel waar respectievelijk bot en snoekbaars dominant zijn. +Aan het Paardenschor overheerst bot de aantallen in het voorjaar en de zomer van `r laatste_jaar` , zeebaars neemt over in het najaar. +In Antwerpen en Steendorp is brakwatergrondel dominant in aantal in voorjaar en najaar, met bot overheersend in aantallen in de zomer. +Rond Kastel en Appels werden verschillende soorten in gelijkaardige anatallen gevangen, in het najaar was er een duidelijke dominantie van brakwatergrondel. +In Overbeke werden vooral blankvoorn en paling geobserveerd in het voorjaar en paling in het najaar. + +Uitgedrukt in biomassa worden dezelfde patronen geobserveerd in `r laatste_jaar` voor het Paardenschor met bot dominant in voorjaar en zomer en zeebaars in het najaar (Figuur \@ref(fig:092-figuur-relatieve-biomassa)). +Voor bijna alle andere sites is paling dominant. +Enkel in Antwerpen en Appels overheerst snoekbaars in het voorjaar en in Steendorp brakwatergrondel in het najaar. ```{r 092-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} @@ -215,23 +208,22 @@ Eerst vooral in de zone met sterke saliniteitsgradiënt maar de laatste jaren oo Omnivoren volgen in aantallen en biomassa en daarna planktivoren. Piscivore estuariene en mariene soorten volgens de EMSE indeling worden in de Zeeschelde niet gevangen met fuiken. -In de zone met sterke saliniteitsgradiënt worden vooral tong en schol gevangen als benthivore mariene migranten. +In de zone met sterke saliniteitsgradiënt worden normaalgezien vooral tong en schol gevangen als benthivore mariene migranten. Het aantal tongen per fuikdag daalde sterk na 2011 en toonde nog een beperkte piek in 2017. -Goede aantallen schol werden gevangen in 2023. -Brakwatergrondel en dikkopje zijn veruit de meest talrijke benthivore estuariene soorten in de oligohaliene en zoete zones. -De laaste jaren wordt hier vooral brakwatergrondel gevangen. -De aantallen per fuikdag schommelen sterk zonder bepaalde trend. -In `r laatste_jaar` is er een piek in het oligohalien en zoet met lange verblijftijd. +In `r laatste_jaar` wordt vooral brakwatergrondel gevangen. +Brakwatergrondel is veruit de meest talrijke benthivore estuariene soort de laatste jaren in het oligohalien en zoet met lange verblijftijd en bereikt recordaantallen in `r laatste_jaar`. -Omnivore mariene soorten worden qua aantallen en biomassa standaard gedomineerd door zeebaars, in `r laatste_jaar` blijft zeebaars aanwezig in vergelijkbare aantallen en biomassa, maar is er een piek van steenbolk. -Grote aantallen juveniele steenbolk werden gevangen in 2023. -Vooral in de zone met sterke saliniteitsgradiënt is zeebaars opvallend aanwezig in de fuikvangsten sinds 2015, terwijl ze in deze zone relatief minder gevangen worden met de ankerkuil. +Omnivore mariene soorten worden qua aantallen en biomassa standaard gedomineerd door zeebaars, in `r laatste_jaar` blijft zeebaars aanwezig in vergelijkbare aantallen en biomassa. +Vooral in de zone met sterke saliniteitsgradiënt is zeebaars opvallend aanwezig in de fuikvangsten, terwijl ze in deze zone relatief minder gevangen worden met de ankerkuil tussen 2015-2024. +In `r laatste_jaar` werd met de ankerkuil ook goede aantallen zeebaars gevangen. +In `r laatste_jaar` ook goede aantallen zeebaars in de fuiken in zoet lang. Planktivore individuen van de groep estuarien residente en mariene migranten zijn vooral juvenielen van mariene soorten haring en sprot, die de luwte van het estuarium opzoeken om op te groeien. Ze zijn meest talrijk in de zone met sterke saliniteitsgradiënt maar ze zijn toch ook tot in de zoete zone terug te vinden. Daar waar de piek in de ankerkuil aantallen zich in 2022 voordeed was dat in 2021 voor de fuikvangsten. De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:092-figuur-biomassa-marien-EMSE)). +De lage biomassa voor zeebaars in zoet met lange verblijftijd toont dat het hier vooral om juvenielen gaat. Soortenrijkdom aan estuariene residenten en mariene migranten is laag, met slechts één of twee soorten per voedselgroep en saliniteitszone (Figuur \@ref(fig:092-figuur-diversiteit-marien-EMSE)). Uitzondering hierop zijn de zone met sterke saliniteitsgradiënt voor benthivoren en omnivoren. @@ -351,8 +343,8 @@ In de zoete zone nemen de aantallen geleidelijk toe. Net zoals voor de meeste andere typische zoetwatersoorten neemt de biomassa toe in stroomopwaartse richting. Sinds 2018 is er in het zoetwater echter een opvallende daling in de biomassa aan baars. -In `r laatste_jaar` is er alver gevangen in de oligohaliene zone, de enigste planktivore zoetwatersoort in de Zeeschelde gevangen met fuiken. Voordien was alver waargenomen in de oligohaliene zone (2020) en zoetwater met korte verblijftijd (2010). +In `r laatste_jaar` is alver niet terug gevangen. Vooral in de zoete zone met korte verblijtijd zijn zowel diversiteit (D), als soortenrijkdom (S) voor de omnivore en benthivore zoetwater soorten relatief hoger dan voor andere functionele groepen (Figuur \@ref(fig:092-figuur-diversiteit-zoetwater-EMSE)). @@ -403,23 +395,21 @@ Ook haring en dikkopje kunnen in vrij grote aantallen voorkomen. De overige soorten komen slechts in kleine aantallen voor. - Brakwatergrondel werd in de eerste jaren vooral in de zone met sterke saliniteitsgradiënt gevangen maar vertoont in recentere jaren grote pieken in het oligohalien en de zoetwater zones. - In `r laatste_jaar` werden veel brakwatergrondels gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. + In `r laatste_jaar` werden recordaantallen brakwatergrondels (\>900 gem. aantal ind./fuikdag) gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. - Dikkopje bevindt zich gemiddeld meer stroomafwaarts en is veel minder talrijk dan brakwatergrondel aanwezig in de fuiken. - Er was een eenmalige grote piek in de oligohaliene zone in 2020, ook in 2023 zijn er goede aantallen in de oligohaliene zone. - Hoge aantallen dikkopje zijn waargenomen met de ankerkuilvisserij. + Er was een eenmalige grote piek in de oligohaliene zone in 2020. + In `r laatste_jaar` is dikkopje grotendeels afwezig. -- Schol komt voor in de zone met sterke saliniteitsgradiëntvangsten, fuikvangsten in `r laatste_jaar` zijn de hoogste tot nu toe. - Een stijgende trend is merkbaar sinds de vangsten van 2017. +- Schol komt voor in de zone met sterke saliniteitsgradiëntvangsten. + Geen schol werd geobserveerd in de fuikvangsten in `r laatste_jaar` voor de eerste keer sinds 2017. - Zeebaars is hoofdzakelijk aanwezig in de zone met sterke saliniteitsgradiënt. - Aantallen tonen de laatste 10 jaar een eerder afnemende trend. + In `r laatste_jaar` werden ook goede aantallen gevonden in het oligohalien. - Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. 2019 en 2021 waren piekjaren voor de oligohaliene zone, 2021 ook voor de zone met sterke saliniteitsgradiënt. - In `r laatste_jaar` was het aantal haringen in de fuikvangsten het hoogst in de zone met sterke saliniteitsgradiënt. - -- Zeedonderpad is voor het eerste terug gevangen sinds 2014. + In `r laatste_jaar` blijfte het aantal haringen dalen. ```{r 092-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} From 8ee4cf69e6bfa2f77ffd100e892dbeb6116ed839 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Thu, 17 Jul 2025 15:28:44 +0200 Subject: [PATCH 06/11] Toevoeging M. Jocque als auteur --- .../092_vissen_fuiken.Rmd | 60 +++++++++---------- .../093_vissen_conclusies.Rmd | 51 +++++++++------- 2 files changed, 58 insertions(+), 53 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd index 154e24a..4207657 100644 --- a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -427,18 +427,18 @@ knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marie De meest voorkomende diadrome sleutelsoorten (\> 10 individuen per fuikdag) zijn bot, paling en (in het verleden) vooral spiering (Figuur \@ref(fig:092-figuur-diadrome-sleutelsoorten)). - Bot komt voor in alle scheldezones, maar met fuiken worden veel meer exemplaren in de zone met sterke saliniteitsgradiënt gevangen dan in andere zones, terwijl dat met de ankerkuil eerder in de oligohaliene en zoete zone met lange verblijftijd is. - In `r laatste_jaar` zijn terug hogere aantallen gevangen. - Er worden niet elk jaar finten gevangen in de fuiken. Dat is niet abnormaal voor deze pelagiale soort, die eerder in de waterkolom dan tegen de bodem gevangen wordt. - Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). + in `r laatste_jaar` werden goede aantallen gevangen in de zoete zone met lange verblijftijd. + Hoewel de aantallen eerder aan de lage kant zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was, is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. - Paling wordt vooral gevangen in het oligohalien en zoetwater en is vooral qua biomassa vrij belangrijk. - Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-aantallen-diadroom-EMSE) en \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). Deze soort vertoonde een heel sterke piek in aantallen in 2014 in de ankerkuilvangsten en in 2015 in de fuikvangsten. - Recent vertonen de fuikaantallen een dalende trend, met in `r laatste_jaar` een bodemjaar, net zoals voor de ankerkuilvangsten. + Recent vertonen de fuikaantallen een dalende trend, met in `r laatste_jaar` een verderzetting van de lage aantallen, net zoals voor de ankerkuilvangsten. ```{r 092-figuur-diadrome-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_diadroom, out.width="100%"} @@ -455,13 +455,14 @@ knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadr De meest voorkomende zoetwater sleutelsoorten qua aantallen/biomassa zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:092-figuur-zoetwater-sleutelsoorten)). -- Na een afname in de periode 2009-2015 van het aantal blankvoorns in de fuikvangsten in alle zones behalve het zoet met korte verblijftijd, variëren de aantallen met een trend tot lichte stijging in alle zones behalve de zone met sterke saliniteitsgradiënt. - Ook in `r laatste_jaar` werden er relatief veel blankvoorns gevangen in het oligohalien en zoetwater. +- Na een afname in de periode 2009-2015 van het aantal blankvoorns in de fuikvangsten in alle zones behalve het zoet met korte verblijftijd, variëren de aantallen sterk. + In `r laatste_jaar` werden er relatief veel blankvoorns gevangen in de zone met saliniteitsgradiënt. + Mogelijks een indicatie van de hoge neerslag in het voorjaar in 2024 en verschuiven van de saliniteitsgradiënt. - De hoogste aantallen brasem worden meestal gevangen in het oligohalien. - Verder vertoont brasem geen duidelijke trend in aantallen. + In `r laatste_jaar` werden er ook relatief veel brasem gevangen in de zone met saliniteitsgradiënt. -- Snoekbaars vangsten in de fuiken blijven relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes hogere aantallen in fuiken in meer saline zones. +- Snoekbaars vangsten in de fuiken blijven relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes lagers aantallen in de fuiken. ```{r 092-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} @@ -489,30 +490,26 @@ De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien ha Het beeld op basis van fuikvangsten is iets complexer en toont andere accenten dan op basis van ankerkuildata. In de zone met sterke saliniteitgradiënt overheerst bot zowel naar aantallen als naar biomassa in de groep van mariene migranten. -Sinds 2012 zijn aantallen en biomassa per fuikdag wel plots fel verminderd. -Ook zeebaars en haring zijn steeds in grote aantallen aanwezig, in toenemende mate sinds 2015. -Schol verdween na 2010 maar is sinds 2018 terug aanwezig. -Brakwatergrondel en dikkopje zijn als estuarien residenten ook elk jaar vertegenwoordigd in redelijk grote aantallen. -in 2023 valt de aanwezigheid van schol en vooral steenbolk op. - -In de oligohaliene zone zijn dikkopje en brakwatergrondel samen met haring de belangrijkste soorten uit deze functionele groep. -In de zoete zones is brakwatergrondel de belangrijkste estuariene soort. -De aantallen in de fuikvangsten variëren er sterk, met af en toe een grote piek. -De aantallen en biomassa van grondels bereiken in 2023 hoge waardes in oligohalien en zoet met lange verblijftijd. -In drogere jaren komen ook haring en zeebaars opgroeien tot in de zoete zones. - -Bot is de belangrijkste trekvis in de zone met sterke saliniteitgradiënt, in aantallen én biomassa, in aantallen gevolgd door driedoornige stekelbaars en spiering. -Paling overheerst echter de biomassa en in sommige jaren wegen ook de optrekkende/terugkerende finten mee. -In de meer stroomopwaartse oligohaliene en zoete zones is spiering zonder meer de meest talrijk aanwezige trekvis. -Ook hier overheerst paling echter in de trekvis biomassa, soms bijgestaan door fint. - +Sinds 2012 zijn aantallen en biomassa per fuikdag wel verminderd. +Verder in de zone met sterke saliniteitgradiënt is normaal ook tong goed vertegenwoordigd, in `r laatste_jaar` is dit minder. +Ook zeebaars is steeds aanwezig, in toenemende mate sinds 2015. +Naar biomassa is paling goed vertegenwoordigd en in sommige jaren wegen ook de optrekkende/terugkerende finten mee. +Voor de zoetwatersoorten komen een groot aantal soorten voor, met onder andere hoge aantallen snoekbaars. +Het gaat hier om relatief lage biomassa, wijzend op vooral juveniele vissen. + +In de oligohaliene zone, samen met zoete zone met korte en lange verblijftijd zijn dikkopje maar vooral brakwatergrondel zowel in aantal als biomassa de belangrijkste soorten bij de mariene en estuariene soorten. +De aantallen in de fuikvangsten variëren sterk, met in `r laatste_jaar` een recordvangst van brakwatergrondel in de oligohaliene zone. +Bij de diadrome soorten is spiering zonder meer de meest talrijke soort. +In biomassa overheerst paling, soms bijgestaan door fint. Aantallen en biomassa van de zoetwatersoorten vertonen een meer gediversifieerd beeld. Snoekbaars is de dominante zoetwatersoort in aantal, maar de dominantie is niet zeer uitgesproken. -snoekbaars, karper, europese meerval, brasem en snoek leveren de belangrijkste bijdragen aan de biomassa van zoetwatersoorten. +Snoekbaars, karper, europese meerval, brasem en snoek leveren de belangrijkste bijdragen aan de biomassa van zoetwatersoorten. De zoewatervissen zijn de meest soortenrijke estuariene gebruiksgroep. De diversiteit is het grootst voor de zoetwatersoorten in de zoete zone met korte verblijftijd. -Het is vooral in deze groep dat in 2022 en 2023 minder soorten gevangen werden met de fuiken, vermoedelijk ook door het feit dat de vangstinspanning gehalveerd werd. +Het is vooral in deze groep dat in 2022-2024 minder soorten gevangen werden met de fuiken, vermoedelijk ook door het feit dat de vangstinspanning gehalveerd werd. +In `r laatste_jaar` werden opvallend veel zoetwatersoorten gevonden in de zone met saliniteitsgradiënt. + Mariene soorten en estuariene migranten zijn duidelijk met een hoger aantal soorten en diversiteit (verdubbeling of meer) vertegenwoordigd in de zone met grote saliniteitsgradiënt dan in de andere saliniteitszones.
@@ -557,18 +554,15 @@ De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weer Benthivoren en omnivoren zijn het meest talrijk en maken ook het grootste deel van de biomassa uit. Tong in de zone met sterke saliniteitsgradiënt en brakwatergrondel in de zoetwater zone zijn traditioneel de dominante benthivoren qua aantallen. -In 2023 worden er meer schol waargenomen dan tong. In biomassa blijft tong dominant in de oligohaliene zone en domineert brasem in de zoetwater zone. - -Spiering (zoete zone) en bot (saliniteitsgradiënt) zijn de dominante omnivoren wat betreft aantallen. -Een groot aantal steenbolk laat zich opmerken in 2023 en zijn dominant in biomassa in de zone met sterke saliniteitsgradiënt. -Voor de biomassa bij de omnivoren is er meestal geen duidelijke dominantie tussen de meest aspectbepalende soorten: bot, europese meerval, fint, karper, kolblei, snoek en snoekbaars. -Dit wordt vaak bepaald door de vangst van enkele grote individuen. +Bot (saliniteitsgradiënt) en spiering (zoete zone) zijn de dominante omnivoren wat betreft aantallen. +Voor de biomassa bij de omnivoren is er vooral een duidelijke aanwezigheid van paling, samen met verschillende andere aspectbepalende soorten zoals bot, europese meerval, fint, karper, kolblei, snoek en snoekbaars. +Biomassa wordt vaak bepaald door de vangst van enkele grote individuen. Baars, rivierprik en zeeprik zijn de enige piscivoren die in kleine en sterk wisselende aantallen gevangen worden. Haring en sprot zijn de enige planktivore soorten van betekenis in de Zeeschelde. -Omnivoren vormen de meest soortenrijke trofische groep maar de diversiteit in deze groep (berekend op basis van aantallen) blijft toch relatief klein door de dominantie van vooral bot en spiering in de aantallen. +Naar soortenrijkdom vormen omnivoren de meest soortenrijke trofische groep maar de gemeenschapsdiversiteit (Shannon) blijft toch relatief klein door de dominantie van vooral bot en spiering in de aantallen. Benthivoren zijn de tweede trofische groep naar soortenrijkdom toe, maar zijn eveneens sterk gedomineerd door een beperkt aantal soorten. Net zoals bij de ankerkuilgegevens geldt hier de kanttekening dat de meeste spieringen juveniele planktivoren zijn en dat adulte spiering, europese meerval, snoek, snoekbaars en zeebaars eigenlijk voornamelijk als piscivoor gekend staan in de Zeeschelde. diff --git a/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd index e8cacc2..3041e2c 100644 --- a/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd @@ -68,13 +68,19 @@ for(i in 1:nrow(meta_data)){ ### Afvissingen in `r laatste_jaar` -`r laatste_jaar` was een tweede **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. -Dit geldt zowel voor de ankerkuil als voor de fuikvangsten, waardoor het beeld van de absolute dominantie van deze soort zelfs in het pelagiaal vervaagt. +`r laatste_jaar` was een opmerkelijk jaar met het laagst aantal soorten vissen (34) tot zover in de opvolging van het visbestand (sinds 2009) bij de afvissingen met ankerkuil. +Vooral opvallend hierbij was het lage aantal vissoorten in Antwerpen, typisch gelegen in de zone met saliniteitsgradiënt. +Dit gecombineerd met de observatie van een opvallend hoog aantal zoetwatersoorten in deze zone bij de fuikvangsten suggereert dat het uitzonderlijke natte voorjaar, met hoge neerslag, in 2024 mogelijks de saliniteitszonaties benedenstrooms verschoven heeft, met als gevolg een aanpassing van de visgemeenschappen. + +`r laatste_jaar` was een derde **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. +Dit geldt zowel voor de ankerkuil als voor de fuikvangsten. Sterke schommelingen in spiering aantallen werden vroeger al opgemerkt in andere gebieden en kunnen deels teruggebracht worden op lage densiteiten van 1 of 2 jaarklassen (Belyanina 1969), waarbij verschillen in leeftijdssamenstelling van populaties voor een stuk gelinkt zijn met verschillen in groeisnelheid en maturatie van de verschillende jaarklassen (Lapin, 1960). Om hier een beter zicht op te krijgen zou voor de Schelde ruimtelijke en seizoenale patronen per leeftijdgroep over de jaren heen geanalyseerd moeten worden in relatie tot abiotiek en beheer. -In 2023 werd met de ankerkuil **uitzonderlijk veel grondels** (*Potamoschistus* sp.) gevangen in vooral het najaar in Branst en Steendorp. -In Steendorp ging het om brakwatergrondel, in Branst opmerkelijk om dikkopje. +In 2024 werd de trend verder gezet van de voorbije twee jaar met vangst van **uitzonderlijk veel grondels** (*Potamoschistus* sp.), vooral brakwatergrondel, met recordaantallen in het oligohalien bij de fuikenvangst en grote aantallen in de zoete zone met lange verblijftijd met ankerkuil. + +De eerste vangst van **shimofurigrondel** (*Tridentiger bifasciatus*) in 2024 met ankerkuil is de toevoeging van een nieuwe vissoort voor de Zeeschelde. +De Shimofurigrondel komt oorspronkelijk uit Azië en is voor het eerst waargenomen in Europa in het kanaal Gent-Terneuzen November 2022 (Verhelst & Verreycken 2023). De **visindex** voor zowel zoet, oligohalien als sterke saliniteitsgradiënt bereikt in 2023 een ontoereikende status. Interpretatie dient met de nodige voorzichtigheid te gebeuren. @@ -86,25 +92,22 @@ Opmerkelijk is wel dat de visindex al een ferme duik neemt in 2021, vergelijkbaa ### Algemene kenmerken van de Zeeschelde populaties -Naar **estuarien habitatgebruik** overheersen de trekvissen de visgemeenschappen van de Zeeschelde in aantal en biomassa. -Het estuarium heeft dus weer zijn functie opgenomen in de levenscyclus van deze soorten. -Om te evalueren of de populaties echt gevestigd en duurzaam zijn is echter een cohorte analyse van de betrokken soorten in tijd en ruimte nodig. +Naar **estuarien habitatgebruik** overheersen in vorige jaren trekvissen de visgemeenschappen van de Zeeschelde in aantal en biomassa. +De laatste drie jaren zien we een verschuiving naar dominantie van estuariene en mariene soorten in het estuarium. +Het estuarium neemt zijn functie voorlopig niet op in de levenscyclus van de trekvissen. +Om te evalueren hoe tijdelijk dit is en of populaties gevestigd en duurzaam zijn is een cohorte analyse van de betrokken soorten in tijd en ruimte nodig. -Naar **dieet** overheersen omnivore soorten, een normale opportunistische evolutie in een estuarium met wisselende levensomstandigheden. -Toch wordt het voedselweb stilaan complexer. -Dit uit zich in een toename van benthivore en piscivore soorten. -Om dit echt te evalueren moet voor de belangrijkste soorten rekening gehouden worden met de dieet shift die ze maken in de overgang van juveniel naar adult. -Ook worden in de EMSE classificatie een aantal gekende piscivoren (volwassen spiering, snoekbaars, zeebaars, snoek, europese meerval) over de volledige levenscyclus tot omnivoren gerekend. -Voor de soorten die de grootste biomassa uitmaken kunnen gerichte maag- en isotoopanalyses zoals voorgesteld in en ter ondersteuning en vervolg op Van de Meutter et al (2021) een het beeld van voedselinteracties verscherpen. +Ook naar **dieet** is er een transitie waarbij in vorige jaren omnivore soorten overheersen, een normale opportunistische evolutie in een estuarium met wisselende levensomstandigheden, naar een dominantie in aantal en biomassa van benthivore soorten. ### Ankerkuil versus fuikresultaten Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, fuikvisserij bemonstert eerder nabij de bodem en beide methoden verschaffen complementaire informatie. Algemeen worden meer soorten gevangen met de ankerkuil. -De veel grotere omvang van de vangst vergroot de kans op éénmalige vangst van zeldzaamheden. -De resultaten van de fuikvangsten leveren echter een hogere Shannon diversiteit (Breine & Van den Bergh, 2022). +De veel grotere omvang van de vangst vergroot de kans op éénmalige vangst van zeldzaamheden (Breine & Van den Bergh, 2022). +In 2024 is dit uitzonderlijk en voor de eerste keer niet het geval. +In vergelijking met het vorige jaar werden in 2024 geen Europese meerval, giebel, kleine koornaarvis, lang snuitzeepaardje, pos, schol, snoek, vetje, wijting, zeelt of zonnebaars gevangen met de ankerkuil. -In deze rapportage kwamen echter nog opvallende verschillen aan bod: +In deze rapportage komen nog enkele andere opvallende verschillen aan bod: - Fuikvangsten en ankerkuil leveren een verschillend beeld op van de relatieve densiteit en biomassa per saliniteitszone. Met de ankerkuil worden de meeste vissen per m³ gevangen in de zoete zone en het minst in de zone met sterke saliniteitsgradiënt. @@ -117,7 +120,7 @@ In deze rapportage kwamen echter nog opvallende verschillen aan bod: Hieruit kunnen we enerzijds afleiden dat het omzetten van vangstaantallen naar aantal per volume eenheid niet zo evident is. Anderzijds zijn plaats en tijdstip zeer bepalend voor het beeld dat we ons vormen van de visgemeenschap. -Concluderend is er een noodzaak om met innovatieve monitoring (bijvoorbeeld met echosounding) continue data te verzamelen over de visgemeenschap op de besproken vislocaties. +Concluderend is er een noodzaak om met innovatieve monitoring (bijvoorbeeld met e-DNA) continue data te verzamelen over de visgemeenschap op de besproken vislocaties. Dit onderzoek moet helpen om de variaties in de vispopulaties in ruimte en tijd te verklaren. Omgekeerd levert de klassieke monitoring informatie over de aanwezige soorten. @@ -135,7 +138,6 @@ Omgekeerd levert de klassieke monitoring informatie over de aanwezige soorten. - EMSE stelt voor om voor de visgemeenschappen afhankelijk van de soort gebruik te maken van of ankerkuil of fuikgegevens. Om de visgemeenschap op een zinvolle manier in zijn geheel te evalueren is het beter om alle soorten op basis van beide datasets te beoordelen. - ## Referenties @@ -250,7 +252,9 @@ Stevens M., Van den Neucker T., Mouton A., Buysse D., Martens S., Baeyens R., Ja Onderzoek naar de trekvissoorten in het stroomgebied van de Schelde. Rapporten van het Instituut voor Natuur- en Bosonderzoek 2009 (INBO.R.2009.9), 188pp. -Van de Meutter F, De Regge N, Bezdenjesnji, O (2021). +Van de Meutter F., De Regge N. +& Bezdenjesnji O. +(2021). Dieetanalyse van hogere trofische niveaus in de Zeeschelde: deel vissen. Resultaten van een studie met stabiele isotopen. Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (41). @@ -260,10 +264,17 @@ DOI: doi.org/10.21436/inbor.44407431 Van Der Meulen D., Walsh C., Taylor M. & Gray C. (2013). -Habitat requirements and spawning strategy of an estuarine-dependent fish, Percalates colonorum. +Habitat requirements and spawning strategy of an estuarine-dependent fish, *Percalates colonorum*. Marine and Freshwater Research. 65 (3): 218-227. +Verhelst P. & Verreycken H.  +(2023).  +First record in Europe of the Asian gobiid, shimofuri (marbled) goby *Tridentiger bifasciatus* Steindachner, 1881.  +Journal of Fish Biology.  +102 (5): 1253-1255.  +DOI: doi.org/10.1111/jfb.15362 + \newpage ## Bijlage From 8e8293d58efdc167bd34f8dddde39af9453f83e0 Mon Sep 17 00:00:00 2001 From: VANOVERBEKE Date: Wed, 27 Aug 2025 11:19:06 +0200 Subject: [PATCH 07/11] correcties data --- .../090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd index 56c4ff4..645ed87 100644 --- a/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd +++ b/moneos_2025/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd @@ -166,6 +166,10 @@ dat_dil <- WaarnemingID %in% dilution_NA$WaarnemingID) +data_recent <- + data_recent %>% + replace_na(list(METI_DILUTION_FACTOR = 1)) + ``` From 11073b4eb756ef7b1ea94d53f004684c0d7a677c Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Mon, 8 Sep 2025 11:02:34 +0200 Subject: [PATCH 08/11] Correcties van Rhea --- moneos_2025/150_geintegreerd_rapport/index.Rmd | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/moneos_2025/150_geintegreerd_rapport/index.Rmd b/moneos_2025/150_geintegreerd_rapport/index.Rmd index 81de3db..6d5298b 100644 --- a/moneos_2025/150_geintegreerd_rapport/index.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/index.Rmd @@ -1,4 +1,4 @@ ---- +--- title: "`r paste0('MONEOS - Geïntegreerd datarapport INBO: Toestand Zeeschelde ', as.numeric(Sys.getenv('jaar_moneos'))-1)`" subtitle: "Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten" author: @@ -50,6 +50,11 @@ author: family: Maesele orcid: 0009-0009-6756-797X affiliation: Research Institute for Nature and Forest (INBO) + - name: + given: Merlijn + family: Jocque + orcid: 0000-0002-7196-7476 + affiliation: Research Institute for Nature and Forest (INBO) - name: given: Vincent family: Smeekens From 420ea2aef9bb9b6b336d21ff45d3f55dfd99b479 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Mon, 8 Sep 2025 16:12:23 +0200 Subject: [PATCH 09/11] Commentaar Gerlinde --- .../090_vissen_inleiding_en_methode.Rmd | 17 ++++---- .../091_vissen_ankerkuil.Rmd | 12 +++--- .../092_vissen_fuiken.Rmd | 40 +++++++++---------- .../093_vissen_conclusies.Rmd | 24 ++++++----- 4 files changed, 46 insertions(+), 47 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd index 483da09..ce4d5e8 100644 --- a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -111,7 +111,7 @@ aantal_soorten_enkel_ankerkuil <- Fichenummer: FICHE S-DS-V-004a -- Vissen (KRW) -**Joost Vanoverbeke, Gunther Van Ryckegem, Rhea Measle, Gerlinde Van Thuyne, Merlijn Jocque** +**Joost Vanoverbeke, Gunther Van Ryckegem, Rhea Maesele, Gerlinde Van Thuyne, Merlijn Jocque** ## Inleiding @@ -143,10 +143,9 @@ Schietfuiken worden in alle EMSE Scheldezones niveau 3 uitgezet. Aanvankelijk werd ook op de zijrivieren jaarlijks gevist maar sinds 2012 werd dit verminderd naar driejaarlijks omdat de totale inspanning te groot werd en omdat de ecosysteem evaluatie vooral op de Zeeschelde zelf gericht is. Ankerkuilvisserij kan enkel uitgevoerd worden in de Zeeschelde tot in de zoete zone met lange verblijftijd omdat de geul verder stroomopwaarts daarvoor te nauw wordt. -INBO fuikvangst- en ankerkuilgegevens zijn beschikbaar via de V.I.S. databank ([https://vis2.inbo.be/](https://vis2.inbo.be/#home)) (Brosens et al., 2015). -Vrijwilligersdata worden afzonderlijk opgeslagen. +INBO fuikvangst- en ankerkuilgegevens evenals vrijwilligersdata zijn beschikbaar via de V.I.S. databank ([https://vis2.inbo.be/](https://vis2.inbo.be/#home)) (Brosens et al., 2015). -In de huidige rapportage worden ankerkuil data en fuikgegevens van de Zeeschelde besproken. +In de huidige rapportage worden ankerkuildata en fuikgegevens van de Zeeschelde besproken. Ankerkuildata en fuikdata van het reguliere Zeeschelde meetnet worden aangeleverd als xlsx-bestanden aan de Scheldemonitor. ```{r 090-tabel-visinspanning, results="asis", fig.show='hide', out.width="100%"} @@ -188,7 +187,7 @@ Aantallen en biomassa worden omgerekend naar aantallen en biomassa per m\textsup In de periode 2012-`r laatste_jaar` werd jaarlijks gevist in de lente (eind april of begin mei), de zomer (juli) en in het najaar (september). In 2020 werd uitzonderlijk enkel in de zomer en het najaar gevist. Er wordt telkens op vier locaties bemonsterd: Doel, Antwerpen, Steendorp en Branst (Figuur \@ref(fig:090-figuur-locaties-ankerkuil)). -Doel en Antwerpen bevinden zich in de EMSE niveau 3 scheldezone 'sterke saliniteitsgradiënt', Steendorp bevindt zich in de oligohaliene zone en Branst in de zoetwater zone met lange verblijftijd. +Doel en Antwerpen bevinden zich in de EMSE niveau 3 scheldezone 'sterke saliniteitsgradiënt' of polyhaliene zone, Steendorp bevindt zich in de licht brakke of oligohaliene zone en Branst in de zoetwater zone met lange verblijftijd. De Lambert coördinaten van de locaties zijn: Doel: 143350; 223091, Antwerpen: 149192; 210267, Steendorp: 142898; 200951 en Branst: 137181; 195683. ```{r 090-figuur-locaties-ankerkuil, fig.cap=cap_locaties_ankerkuil, out.width="100%"} @@ -218,7 +217,7 @@ In de fuik bevinden zich een aantal trechtervormige netten waarvan het smalle ui Eenmaal de vissen een trechter gepasseerd zijn, kunnen ze niet meer terug. Om de vissen uit de fuik te halen wordt deze helemaal achteraan geopend en leeggemaakt. -De bemonsterde locaties in de periode 2009-2022 zijn weergegeven in Figuur \@ref(fig:090-figuur-locaties-fuiken). +De bemonsterde locaties in de periode 2009-`r laatste_jaar` zijn weergegeven in Figuur \@ref(fig:090-figuur-locaties-fuiken). Vanaf het najaar van 2015 werd de locatie Zandvliet niet meer bemonsterd maar vervangen door het Paardenschor als nieuwe locatie in de zone sterke saliniteitsgradiënt (Figuur 2). Bij de bespreking van de resultaten wordt Zandvliet niet expliciet vermeld maar wordt er verwezen naar Paardenschor. De Lambert coördinaten van de locaties zijn: Zandvliet: 139864; 228413, Paardenschor: 142882; 225713, Antwerpen: 150050; 210800, Steendorp: 142520; 201050, Kastel: 137450; 193480, Appels: 128997; 193213 en Overbeke: 114823; 188235. @@ -228,7 +227,7 @@ Tot en met 2021 stonden de fuiken 48 uur op locatie en werden ze om de 24 uur le De gevangen vissen worden ter plaatse geïdentificeerd, geteld, gemeten, gewogen en vervolgens teruggezet. Het aantal individuen en de biomassa gevangen met fuiken worden omgerekend naar aantallen en biomassa per fuikdag. Deze getransformeerde data worden gebruikt in de verdere analyse. -Om de totale visinspanning op de Zeeschelde te rationaliseren staan de fuiken sinds 2022 slechts 24 u op locatie en worden ze maar één keer leeggemaakt. +Om de totale visinspanning op de Zeeschelde te rationaliseren staan de fuiken sinds 2022 slechts 24 uur op locatie en worden ze maar één keer leeggemaakt. De gemiddelde aantallen en biomassa per fuikdag zullen hierdoor weinig veranderen maar de tweede fuikdag voegde in het verleden gemiddeld 2 extra soorten toe (berekening op basis van 144 campagnes). Deze strategiewijziging zal dus een sprong in de tijdreeks voor soortenrijkdom veroorzaken. @@ -269,7 +268,7 @@ Om een overzichtelijke vaste structuur te behouden worden ze wel telkens mee opg Een overzicht van soorten die sinds 2012 in de Zeeschelde werden gevangen, met aanduiding van EMSE habitatgebruik en dieetvoorkeur wordt gegeven in Tabel \@ref(tab:093-tabel-zeeschelde-soorten) in bijlage. Er werden in die periode `r aantal_soorten` soorten gevangen waarvan `r aantal_soorten_beide` soorten in zowel ankerkuil als fuiken, `r aantal_soorten_enkel_ankerkuil` soorten enkel met de ankerkuil en `r aantal_soorten_enkel_fuiken` soorten enkel met de dubbele schietfuiken. -Voor elk van de EMSE functionele groepen worden per jaar en per vangstmethode het totaal aantal gevangen individuen en de totale biomassa per vangsteenheid (1000m³ bemonsterd water voor ankerkuil, 1 fuikdag voor fuikvangsten) alsook het aantal soorten en de Shannon diversiteit gerapporteerd. +Voor elk van de EMSE functionele groepen worden per jaar en per vangstmethode het totaal aantal gevangen individuen en de totale biomassa per vangsteenheid (1000 m³ bemonsterd water voor ankerkuil, 1 fuikdag voor fuikvangsten) alsook het aantal soorten en de Shannon diversiteit gerapporteerd. Dit per scheldezone (EMSE niveau 3) en gemiddeld over de bemonsterde seizoenen (voorjaar, zomer, najaar). De Shannon diversiteit *D* wordt berekend als: @@ -289,7 +288,7 @@ Daarnaast zijn ook de europees beschermde soorten opgenomen in de sleutelsoorten ### Bepalen van de visindex De gegevens van de fuikvangsten in de Zeeschelde worden gebruikt om de visindex per KRW waterlichaam te berekenen volgens de zone-specifieke estuariene index voor biotische integriteit (Breine et al., 2010). -De Index wordt berekend op basis van de jaargegevens en is zodoende robuuster dan de brakwater index die gebaseerd is op dagvangsten (Breine et al., 2007). +De index wordt berekend op basis van de jaargegevens en is zodoende robuuster dan de brakwater index die gebaseerd is op dagvangsten (Breine et al., 2007). De index score per waterlichaam integreert de beoordeling van een aantal metrieken, wordt vertaald naar een ecologische kwaliteitsratio (EQR) tussen 0 en 1 en ondergebracht in één van de ecologische kwaliteitsklassen, variërend van 'slecht' over 'onvoldoende', 'matig', 'goed ecologisch potentieel' (GEP) tot 'maximaal ecologisch potentieel' (MEP). Elke gebruikte metriek staat voor een bepaalde functie van het ecosysteem voor de visgemeenschap. De betekenis van de gebruikte metrieken is weergegeven in Tabel \@ref(tab:090-tabel-metrieken-visindex). diff --git a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd index bc414b0..0b71ee4 100644 --- a/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd @@ -155,19 +155,17 @@ knitr::include_graphics(paste0(pad_figuren, "aantal_soorten_locatie.jpg")) We analyseren alle vangstgegevens van `r laatste_jaar`. Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. Juveniele haring en sprot werden samen geregistreerd als "haringachtigen" . -In de zomer was het overgrote deel van de haringachtigen haring, in het najaar werden in Doel een merendeel sprot gevangen. - Uit deze analyse blijkt dat de relatieve abundantie van soorten zowel seizoenaal als ruimtelijk verschilt (Figuur \@ref(fig:091-figuur-relatief-aantal)). In de zone met sterke saliniteitsgradiënt zijn spiering (Doel) en brakwatergrondel (Antwerpen) dominant in het voorjaar van `r laatste_jaar`. -In het najaar komt op deze locaties vooral sprot veel voor, met daarnaast een duidelijke aanwezigheid van spiering en haring. -Spiering is alomtegenwoordig en dominant in Steendorp tjijdens het voorjaar en de zomer, en ook in Branst gedurende de zomer. +In het najaar komen op deze locaties vooral sprot veel voor, met daarnaast een duidelijke aanwezigheid van spiering en haring. +Spiering is alomtegenwoordig en dominant in Steendorp tijdens het voorjaar en de zomer, en ook in Branst gedurende de zomer. In het najaar neemt brakwatergrondel het over in Steendorp en ook in Branst, vergelijkbaar met vorig jaar. Bot is dominant in Branst tijdens de zomer en duidelijk aanwezig in Steendorp en Antwerpen. Uitgedrukt in biomassa worden deze patronen versterkt en duidelijk zichtbaar met een bevestiging van de alomtegenwoordigheid van spiering in zowel de zone met sterke saliniteitsgradient (Doel, Antwerpen) als in de oligohaliene zone (Steendorp) in het voorjaar. De dominantie van spiering verschuift in het jaar bovenstrooms naar de oligohaliene (Steendorp) en zoete (Branst) zone tijdens de zomer en dan terug naar de polyhaliene (Antwerpen) en oligohaliene zone (Steendorp) in het najaar. -De zomer en het najaar in de polyhaliene zone worden verder gedomineerd door haring sprot en haringachtigen. +De zomer in de polyhaliene zone worden gedomineerd door sprot en haring. In Branst staat karper in voor een groot deel van de biomassa in het voorjaar (Figuur \@ref(fig:091-figuur-relatieve-biomassa)), en treedt brakwatergrondel op de voorgrond in het najaar. ```{r 091-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} @@ -508,8 +506,8 @@ Het beeld van mariene en estuariene soorten is iets complexer omdat hier in real In de zoete zone met lange verblijftijd en in het oligohalien zijn brakwatergrondel en dikkopje, twee estuarien residente soorten, de meest talrijke soorten van deze gildengroep. Afgezien van de uitzonderlijke piek in 2023 voor dikkopje is er vooral een graduele toename van aantallen en biomassa's van brakwaterrondel zichtbaar sinds 2019. -In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk, evenals sprot in in 2022 en `r laatste_jaar`. -Gelijkaardige patronen zijn zichtbaar op basis van biomassa en zichtbaar tot in het oligohalien. +In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk, evenals sprot in 2022 en `r laatste_jaar`. +Gelijkaardige patronen zijn zichtbaar op basis van biomassa en dit tot in het oligohalien. Mariene migranten zoeken de beschutting en voedselrijkdom van het estuarium op tot in de zoetwater zone. De aantallen en biomassa's variëren sterk van jaar tot jaar. diff --git a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd index 4207657..3c7e3b3 100644 --- a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -74,7 +74,7 @@ Opmerkelijk veel soorten zijn gevangen in Antwerpen en Paardenschor in `r laatst In vergelijking met de ankerkuil werden in elke zone minder soorten bovengehaald met de fuiken, behalve in Antwerpen. Over de seizoenen werden met de fuiken het grootste aantal soorten gevangen in de zomer en het najaar terwijl dat met de ankerkuil in het voorjaar en de zomer was. -Totaal over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden meest soorten gevangen in de zone met sterke saliniteitsgradiënt (Zandvliet/Paardenschor \> Antwerpen) (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)) en daalt de soortenrijkdom in stroomopwaartse richting, met iets minder soorten in de oligohaliene zone (Steendorp), en het laagst aantal soorten in de zoetwaterzone met lange (Kastel) en korte (Appels, Overbeke) verblijftijd. +Totaal over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden meeste soorten gevangen in de zone met sterke saliniteitsgradiënt (Zandvliet/Paardenschor \> Antwerpen) (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)) en daalt de soortenrijkdom in stroomopwaartse richting, met iets minder soorten in de oligohaliene zone (Steendorp), en het laagst aantal soorten in de zoetwaterzone met lange (Kastel) en korte (Appels, Overbeke) verblijftijd. Vanaf 2017 worden in de zone met sterke saliniteitsgradiënt wel minder soorten gevangen. @@ -163,7 +163,7 @@ Het patroon verschilt ook sterk van dat van de ankerkuilvangsten en geeft algeme Aan het Paardenschor overheerst bot de aantallen in het voorjaar en de zomer van `r laatste_jaar` , zeebaars neemt over in het najaar. In Antwerpen en Steendorp is brakwatergrondel dominant in aantal in voorjaar en najaar, met bot overheersend in aantallen in de zomer. -Rond Kastel en Appels werden verschillende soorten in gelijkaardige anatallen gevangen, in het najaar was er een duidelijke dominantie van brakwatergrondel. +Rond Kastel en Appels werden verschillende soorten in gelijkaardige aantallen gevangen, in het najaar was er een duidelijke dominantie van brakwatergrondel. In Overbeke werden vooral blankvoorn en paling geobserveerd in het voorjaar en paling in het najaar. Uitgedrukt in biomassa worden dezelfde patronen geobserveerd in `r laatste_jaar` voor het Paardenschor met bot dominant in voorjaar en zomer en zeebaars in het najaar (Figuur \@ref(fig:092-figuur-relatieve-biomassa)). @@ -216,7 +216,7 @@ Brakwatergrondel is veruit de meest talrijke benthivore estuariene soort de laat Omnivore mariene soorten worden qua aantallen en biomassa standaard gedomineerd door zeebaars, in `r laatste_jaar` blijft zeebaars aanwezig in vergelijkbare aantallen en biomassa. Vooral in de zone met sterke saliniteitsgradiënt is zeebaars opvallend aanwezig in de fuikvangsten, terwijl ze in deze zone relatief minder gevangen worden met de ankerkuil tussen 2015-2024. In `r laatste_jaar` werd met de ankerkuil ook goede aantallen zeebaars gevangen. -In `r laatste_jaar` ook goede aantallen zeebaars in de fuiken in zoet lang. +In `r laatste_jaar` ook goede aantallen zeebaars in de fuiken in zoet lang met lange verblijftijd. Planktivore individuen van de groep estuarien residente en mariene migranten zijn vooral juvenielen van mariene soorten haring en sprot, die de luwte van het estuarium opzoeken om op te groeien. Ze zijn meest talrijk in de zone met sterke saliniteitsgradiënt maar ze zijn toch ook tot in de zoete zone terug te vinden. @@ -276,11 +276,11 @@ In de zone met sterke saliniteitsgradiënt is bot de meest dominante diadrome so In de zone met sterke saliniteitsgradiënt wordt bot in de grootste aantallen gevangen. Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 400-600 individuen per fuikdag in 2015 in Overbeke. In recente jaren zijn de aantallen, net als in de ankerkuildata een stuk lager (\<50 individuen per fuikdag). -Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet ook op basis van fuikdata vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. +Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet ook op basis van fuikdata vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootst in de zone met sterke saliniteitsgradiënt. De biomassa van omnivore diadromen in de oligohaliene en zoete zones wordt vooral door paling en in sommige gevallen ook optrekkende fint bepaald (Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). In de zone met sterke saliniteitsgradiënt maken vooral bot, paling en een enkele keer ook dunlipharder en fint de biomassa uit. -Diversiteit voor diadrome omnivoren is gemiddeld hoger dan voor mariene en estuarien residente soorten voor de fuikvangsten omdat spiering als pelagiale soort minder domineert met deze vangstmethode (Figuur \@ref(fig:092-figuur-diversiteit-diadroom-EMSE)). +Diversiteit van diadrome omnivoren is gemiddeld hoger dan van mariene en estuarien residente soorten voor de fuikvangsten omdat spiering als pelagiale soort minder domineert met deze vangstmethode (Figuur \@ref(fig:092-figuur-diversiteit-diadroom-EMSE)). ```{r 092-figuur-aantallen-diadroom-EMSE, fig.cap=aantallen_diadroom_EMSE, out.width="110%"} @@ -319,14 +319,14 @@ knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg") Bij de zoetwater soorten zijn omnivoren het meest talrijk en vertegenwoordigen ze de grootste biomassa, gevolgd door benthivoren en vervolgens piscivoren (Figuur \@ref(fig:092-figuur-aantallen-zoetwater-EMSE), Figuur \@ref(fig:092-figuur-biomassa-zoetwater-EMSE)). -De fuikresultaten van de zoetwater soorten geven een zeer verschillend beeld van dat van de ankerkuilvangsten. +De fuikresultaten van de zoetwater soorten geven een zeer verschillend beeld dan van de ankerkuilvangsten. Hoewel het gaat om zoetwater soorten, worden van deze estuariene gebruiksgroep relatief meer individuen per fuikdag gevangen in de zone met sterke saliniteitsgradiënt en ook in de oligohaliene zone. Kijken we echter naar de biomassa gegevens dan verandert het beeld grondig met de hogere biomassa's in stroomopwaartse richting. In de groep van benthische zoetwatersoorten bepalen vooral brasem en een enkele keer blauwbandgrondel de relatieve aantallen, die in stroomopwaartse richting afnemen. -De biomassa wordt echter bijna uitsluitend door brasem bepaald, die in individuele grootte en gewicht net toeneemt in stroomopwaartse richting van gemiddeld 10g aan de grens naar 300-400g in Overbeke. -Daarom is de biomassa van deze functionele groep relatief groter in de stroomopwaartse stations. -Opvallend zijn een recordvangst van grote brasems in Steendorp (oligohalien) in de zomer van 2014 en een steur van 124cm en 13,5 kg in Kastel (zoet lange verblijftijd) in 2019. +De biomassa wordt echter bijna uitsluitend door brasem bepaald, die in individuele grootte en gewicht net toeneemt in stroomopwaartse richting van gemiddeld 10 g aan de grens met Nederland naar 300-400 g in Overbeke. +Daarom is de biomassa van deze functionele groep relatief groter in de stroomopwaartse locaties. +Opvallend zijn een recordvangst van grote brasems in Steendorp (oligohalien) in de zomer van 2014 en een steur van 124 cm en 13,5 kg in Kastel (zoet lange verblijftijd) in 2019. Deze zijn niet te zien in de aantallen maar wegen wel door in de biomassa. Snoekbaars is de meest talrijk gevangen omnivore zoetwatersoort, maar bepaalt de biomassa niet in dezelfde mate als bij de ankerkuilvangsten. @@ -395,21 +395,21 @@ Ook haring en dikkopje kunnen in vrij grote aantallen voorkomen. De overige soorten komen slechts in kleine aantallen voor. - Brakwatergrondel werd in de eerste jaren vooral in de zone met sterke saliniteitsgradiënt gevangen maar vertoont in recentere jaren grote pieken in het oligohalien en de zoetwater zones. - In `r laatste_jaar` werden recordaantallen brakwatergrondels (\>900 gem. aantal ind./fuikdag) gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. + In `r laatste_jaar` werden recordaantallen brakwatergrondels (\>900 gemiddeld aantal individuen per fuikdag) gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. -- Dikkopje bevindt zich gemiddeld meer stroomafwaarts en is veel minder talrijk dan brakwatergrondel aanwezig in de fuiken. +- Dikkopje bevindt zich gemiddeld meer stroomafwaarts en is veel minder talrijk aanwezig dan brakwatergrondel in de fuiken. Er was een eenmalige grote piek in de oligohaliene zone in 2020. In `r laatste_jaar` is dikkopje grotendeels afwezig. -- Schol komt voor in de zone met sterke saliniteitsgradiëntvangsten. - Geen schol werd geobserveerd in de fuikvangsten in `r laatste_jaar` voor de eerste keer sinds 2017. +- Schol komt voor in de zone met sterke saliniteitsgradiënt. + Geen schol werd geobserveerd in de fuikvangsten in `r laatste_jaar`, voor de eerste keer sinds 2017. - Zeebaars is hoofdzakelijk aanwezig in de zone met sterke saliniteitsgradiënt. In `r laatste_jaar` werden ook goede aantallen gevonden in het oligohalien. - Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. 2019 en 2021 waren piekjaren voor de oligohaliene zone, 2021 ook voor de zone met sterke saliniteitsgradiënt. - In `r laatste_jaar` blijfte het aantal haringen dalen. + In `r laatste_jaar` bleef het aantal haringen dalen. ```{r 092-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} @@ -430,7 +430,7 @@ De meest voorkomende diadrome sleutelsoorten (\> 10 individuen per fuikdag) zijn - Er worden niet elk jaar finten gevangen in de fuiken. Dat is niet abnormaal voor deze pelagiale soort, die eerder in de waterkolom dan tegen de bodem gevangen wordt. - in `r laatste_jaar` werden goede aantallen gevangen in de zoete zone met lange verblijftijd. + In `r laatste_jaar` werden goede aantallen gevangen in de zoete zone met lange verblijftijd. Hoewel de aantallen eerder aan de lage kant zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was, is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. @@ -456,13 +456,13 @@ knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadr De meest voorkomende zoetwater sleutelsoorten qua aantallen/biomassa zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:092-figuur-zoetwater-sleutelsoorten)). - Na een afname in de periode 2009-2015 van het aantal blankvoorns in de fuikvangsten in alle zones behalve het zoet met korte verblijftijd, variëren de aantallen sterk. - In `r laatste_jaar` werden er relatief veel blankvoorns gevangen in de zone met saliniteitsgradiënt. - Mogelijks een indicatie van de hoge neerslag in het voorjaar in 2024 en verschuiven van de saliniteitsgradiënt. + In `r laatste_jaar` werden er relatief veel blankvoorns gevangen in de zone met sterke saliniteitsgradiënt. + Mogelijks een gevolg van de hoge neerslag in het voorjaar van 2024 en een hierdoor het verschuiven van de saliniteitsgradiënt. - De hoogste aantallen brasem worden meestal gevangen in het oligohalien. In `r laatste_jaar` werden er ook relatief veel brasem gevangen in de zone met saliniteitsgradiënt. -- Snoekbaars vangsten in de fuiken blijven relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes lagers aantallen in de fuiken. +- Snoekbaars vangsten in de fuiken zijn relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes lagere aantallen in de fuiken. ```{r 092-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} @@ -491,7 +491,7 @@ Het beeld op basis van fuikvangsten is iets complexer en toont andere accenten d In de zone met sterke saliniteitgradiënt overheerst bot zowel naar aantallen als naar biomassa in de groep van mariene migranten. Sinds 2012 zijn aantallen en biomassa per fuikdag wel verminderd. -Verder in de zone met sterke saliniteitgradiënt is normaal ook tong goed vertegenwoordigd, in `r laatste_jaar` is dit minder. +Verder in de zone met sterke saliniteitgradiënt is normaal ook tong goed vertegenwoordigd, maar in `r laatste_jaar` is dit minder. Ook zeebaars is steeds aanwezig, in toenemende mate sinds 2015. Naar biomassa is paling goed vertegenwoordigd en in sommige jaren wegen ook de optrekkende/terugkerende finten mee. Voor de zoetwatersoorten komen een groot aantal soorten voor, met onder andere hoge aantallen snoekbaars. @@ -505,7 +505,7 @@ Aantallen en biomassa van de zoetwatersoorten vertonen een meer gediversifieerd Snoekbaars is de dominante zoetwatersoort in aantal, maar de dominantie is niet zeer uitgesproken. Snoekbaars, karper, europese meerval, brasem en snoek leveren de belangrijkste bijdragen aan de biomassa van zoetwatersoorten. -De zoewatervissen zijn de meest soortenrijke estuariene gebruiksgroep. +De zoetwatervissen zijn de meest soortenrijke estuariene gebruikersgroep. De diversiteit is het grootst voor de zoetwatersoorten in de zoete zone met korte verblijftijd. Het is vooral in deze groep dat in 2022-2024 minder soorten gevangen werden met de fuiken, vermoedelijk ook door het feit dat de vangstinspanning gehalveerd werd. In `r laatste_jaar` werden opvallend veel zoetwatersoorten gevonden in de zone met saliniteitsgradiënt. diff --git a/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd index 3041e2c..ffbc6c0 100644 --- a/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/093_vissen_conclusies.Rmd @@ -68,16 +68,20 @@ for(i in 1:nrow(meta_data)){ ### Afvissingen in `r laatste_jaar` -`r laatste_jaar` was een opmerkelijk jaar met het laagst aantal soorten vissen (34) tot zover in de opvolging van het visbestand (sinds 2009) bij de afvissingen met ankerkuil. -Vooral opvallend hierbij was het lage aantal vissoorten in Antwerpen, typisch gelegen in de zone met saliniteitsgradiënt. -Dit gecombineerd met de observatie van een opvallend hoog aantal zoetwatersoorten in deze zone bij de fuikvangsten suggereert dat het uitzonderlijke natte voorjaar, met hoge neerslag, in 2024 mogelijks de saliniteitszonaties benedenstrooms verschoven heeft, met als gevolg een aanpassing van de visgemeenschappen. +Dit jaar heeft het laagst aantal soorten vissen (34) tot zover in de opvolging van het visbestand (sinds 2009) bij de afvissingen met ankerkuil. +Vooral opvallend hierbij is het lage aantal vissoorten in Antwerpen, typisch gelegen in de zone met sterke saliniteitsgradiënt. +Dit gecombineerd met de observatie van een opvallend hoog aantal zoetwatersoorten in deze zone bij de fuikvangsten suggereert dat het uitzonderlijke natte voorjaar, met veel neerslag, in 2024 mogelijks de saliniteitszonaties benedenstrooms verschoven heeft, met als gevolg een aanpassing van de visgemeenschappen. -`r laatste_jaar` was een derde **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. +De bemonstering in 2024 zijn een derde **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. Dit geldt zowel voor de ankerkuil als voor de fuikvangsten. Sterke schommelingen in spiering aantallen werden vroeger al opgemerkt in andere gebieden en kunnen deels teruggebracht worden op lage densiteiten van 1 of 2 jaarklassen (Belyanina 1969), waarbij verschillen in leeftijdssamenstelling van populaties voor een stuk gelinkt zijn met verschillen in groeisnelheid en maturatie van de verschillende jaarklassen (Lapin, 1960). Om hier een beter zicht op te krijgen zou voor de Schelde ruimtelijke en seizoenale patronen per leeftijdgroep over de jaren heen geanalyseerd moeten worden in relatie tot abiotiek en beheer. -In 2024 werd de trend verder gezet van de voorbije twee jaar met vangst van **uitzonderlijk veel grondels** (*Potamoschistus* sp.), vooral brakwatergrondel, met recordaantallen in het oligohalien bij de fuikenvangst en grote aantallen in de zoete zone met lange verblijftijd met ankerkuil. +Opmerkelijk is dat er na zeven jaar opnieuw een piek in **fint** werd vastgesteld in 2024. +De oorzaken van deze schommelingen zijn nog onvoldoende duidelijk. +Verdere en systematische opvolging van zowel paaitrek als rekruteringssucces is daarom noodzakelijk om inzicht te krijgen in de dynamiek van de soort en om te kunnen beoordelen hoe duurzaam de hervestiging van de fint in de Zeeschelde is. + +In 2024 wordt de trend verder gezet van de voorbije twee jaar met vangst van **uitzonderlijk veel grondels** (*Potamoschistus* sp.), vooral brakwatergrondel, met recordaantallen in het oligohalien bij de fuikenvangst en grote aantallen in de zoete zone met lange verblijftijd met ankerkuil. De eerste vangst van **shimofurigrondel** (*Tridentiger bifasciatus*) in 2024 met ankerkuil is de toevoeging van een nieuwe vissoort voor de Zeeschelde. De Shimofurigrondel komt oorspronkelijk uit Azië en is voor het eerst waargenomen in Europa in het kanaal Gent-Terneuzen November 2022 (Verhelst & Verreycken 2023). @@ -105,7 +109,7 @@ Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, f Algemeen worden meer soorten gevangen met de ankerkuil. De veel grotere omvang van de vangst vergroot de kans op éénmalige vangst van zeldzaamheden (Breine & Van den Bergh, 2022). In 2024 is dit uitzonderlijk en voor de eerste keer niet het geval. -In vergelijking met het vorige jaar werden in 2024 geen Europese meerval, giebel, kleine koornaarvis, lang snuitzeepaardje, pos, schol, snoek, vetje, wijting, zeelt of zonnebaars gevangen met de ankerkuil. +In vergelijking met het vorige jaar werden in 2024 geen Europese meerval, giebel, kleine koornaarvis, langsnuitzeepaardje, pos, schol, snoek, vetje, wijting, zeelt of zonnebaars gevangen met de ankerkuil. In deze rapportage komen nog enkele andere opvallende verschillen aan bod: @@ -118,11 +122,9 @@ In deze rapportage komen nog enkele andere opvallende verschillen aan bod: De grote spieringpiek in de ankerkuildata valt in bijvoorbeeld in 2014 terwijl die in 2015 valt op basis van de fuikgegevens. Voor haring waren dat 2022 en 2021 respectievelijk. -Hieruit kunnen we enerzijds afleiden dat het omzetten van vangstaantallen naar aantal per volume eenheid niet zo evident is. -Anderzijds zijn plaats en tijdstip zeer bepalend voor het beeld dat we ons vormen van de visgemeenschap. -Concluderend is er een noodzaak om met innovatieve monitoring (bijvoorbeeld met e-DNA) continue data te verzamelen over de visgemeenschap op de besproken vislocaties. -Dit onderzoek moet helpen om de variaties in de vispopulaties in ruimte en tijd te verklaren. -Omgekeerd levert de klassieke monitoring informatie over de aanwezige soorten. +Het omzetten van vangstaantallen naar aantallen per volume-eenheid is niet vanzelfsprekend, en ook plaats en tijdstip beïnvloeden sterk het beeld van de visgemeenschap. +Innovatieve monitoring, zoals e-DNA, kan een meerwaarde zijn om continu data te verzamelen en variaties in ruimte en tijd beter te begrijpen. +Voor rekrutering kan e-DNA echter maar beperkt bijdragen, waardoor aanvullende methoden noodzakelijk blijven. ### EMSE methodiek From f64e1167654c934370865c3190cb0ec7f8e40c3a Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Fri, 12 Sep 2025 16:13:35 +0200 Subject: [PATCH 10/11] Aanvulling caption figuur --- .../090_vissen_inleiding_en_methode.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd index ce4d5e8..761572f 100644 --- a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -149,7 +149,7 @@ In de huidige rapportage worden ankerkuildata Ankerkuildata en fuikdata van het reguliere Zeeschelde meetnet worden aangeleverd als xlsx-bestanden aan de Scheldemonitor. ```{r 090-tabel-visinspanning, results="asis", fig.show='hide', out.width="100%"} -caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*)." +caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*). Ankerkuil omvat twee (voorjaar, najaar) (-) of drie bemonsteringen (voorjaar, zomer, najaar)". img_file <- paste0(pad_figuren, "visinspanningINBO.jpg") figtab(knitr::opts_current$get()$label, img_file, From 425a8951b2823488ff0d5b364876111cd1b08be8 Mon Sep 17 00:00:00 2001 From: JOCQUE Date: Fri, 12 Sep 2025 16:28:46 +0200 Subject: [PATCH 11/11] Correctie caption --- .../090_vissen_inleiding_en_methode.Rmd | 2 +- .../092_vissen_fuiken.Rmd | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd index 761572f..ce4d5e8 100644 --- a/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -149,7 +149,7 @@ In de huidige rapportage worden ankerkuildata Ankerkuildata en fuikdata van het reguliere Zeeschelde meetnet worden aangeleverd als xlsx-bestanden aan de Scheldemonitor. ```{r 090-tabel-visinspanning, results="asis", fig.show='hide', out.width="100%"} -caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*). Ankerkuil omvat twee (voorjaar, najaar) (-) of drie bemonsteringen (voorjaar, zomer, najaar)". +caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*)." img_file <- paste0(pad_figuren, "visinspanningINBO.jpg") figtab(knitr::opts_current$get()$label, img_file, diff --git a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd index 3c7e3b3..5afbe50 100644 --- a/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd +++ b/moneos_2025/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -604,25 +604,33 @@ knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_di #### Visindex -We berekenden de indexwaarden voor alle beschikbare gegevens (Tabel \@ref(tab:092-tabel-visindex), Figuur ). +We berekenen de indexwaarden voor alle beschikbare gegevens (Tabel \@ref(tab:092-tabel-visindex), Figuur ). De evolutie van de visindex in de Zeeschelde is ook één van de INBO natuurindicatoren () In de periode 2011-2020 was deze indicator redelijk stabiel in vergelijking tot het decennium dat daaraan voorafging: De zoete zone scoorde doorgaans beter dan de zone met sterke saliniteitsgradiënt en de oligohaliene zone had meestal de laagste score. -De laatste twee jaren daalde de EQR van de zoete zone echter van goed ecologisch potentieel in 2020 over matig in 2021 naar ontoereikend in 2022 en `r laatste_jaar`. -De beide andere zones haalden nog nooit de goede ecologische toestand en scoren beide ontoereikend in `r laatste_jaar`. +De laatste twee jaren daalde de EQR van de zoete zone echter van goed ecologisch potentieel in 2020 over matig in 2021 naar ontoereikend vanaf 2022 tot slechte toestand in `r laatste_jaar`. +De EQR van de matig brakke zone verbeterd sinds vorig jaar en bereikt een matige toestand. +De zone met sterke saliniteitsgradiënt blijft in `r laatste_jaar`ontoereikend zoals in 2023. Figuur \@ref(fig:092-figuur-spindiagram) geeft voor elke zone een indicatie van de ecologische aspecten die minder en beter scoren in `r laatste_jaar`. Zie Tabel \@ref(tab:090-tabel-metrieken-visindex) voor verklaring van de afkortingen. -In de zoetwaterzone scoren alle metrieken slecht behalve het totaal aantal soorten en het aantal individuen per fuikdag. -Vooral het percentage van gespecialiseerde paaiers trekt het geheel omlaag. -In de oligohaliene zone scoren alle metrieken laag en het totaal aantal individuen per fuikdag goed. -In de saliniteitsgradiënt is de score voor alle metrieken laag. + +In de zoetwaterzone scoren alle metrieken slecht en ook het totaal aantal soorten en het aantal individuen per fuikdag zijn in `r laatste_jaar` minder hoog dan in 2023. +Het relatief percentage diadrome vissen, gespecialiseerde paaiers, piscivoren en benthische soorten scoren anno 2024 nog lager dan in 2023 zodat in deze zone een ‘slechte kwaliteit’ wordt gehaald. + +In de zwak brakke zone vingen we in 2024, 16 referentie soorten, Het aantal gevangen individuen is toegenomen in vergelijking met die van 2023 (503 individuen per fuikdag in `r laatste_jaar` in vergelijking met 117 individuen per fuikdag in 2023), deze metriek scoort dan ook heel goed. +De metriek intolerante species scoort anno 2024 het laagst maar haalt dezelfde score als in 2023. +De overige metrieken scoren allemaal beter dan in 2023. +De uiteindelijke EQR in 2024 is zo met een klasse verhoogd naar een ‘matige kwaliteit’. + +In de zone met hoge saliniteitsgradieënt scoren de metrieken diadrome soorten en intolerante scoren een ‘ontoereikende kwaliteit’. +De overige metrieken scoren iets beter maar toch wordt in deze zone maar een totale EQR gehaald van 0,46 en blijft de evaluatie indicatief voor een ‘ontoereikende kwaliteit’. ```{r 092-tabel-visindex} tabel_visindex <- read_excel(paste0(maak_pad(hoofdstuk, "tabellen"), "visindexreeks.xlsx"), - sheet = "tabel1995_2022", + sheet = "tabel1995_2024", skip = 1) cap_visindex <-