Purpose

Look at the sampling effort for the various parameters to be included in the long-term WQ publication. This will help us decide how to structure our ANOVA models. Sampling effort is visualized with tile plots of samples collected by region and season and maps displaying spatial coverage.

Global code and functions

# Load packages
library(tidyverse)
library(scales)
library(sf)
library(qs)
library(here)
library(conflicted)
# Declare package conflict preferences
conflicts_prefer(dplyr::filter())
## [conflicted] Will prefer dplyr::filter over any other package.
# Check if we are in the correct working directory
i_am("notebooks/sampling_effort.Rmd")
## here() starts at C:/Repositories/04_IEP_Org/WQ-LT-Publication
# Run session info to display package versions
devtools::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.2.3 (2023-03-15 ucrt)
##  os       Windows 10 x64 (build 19044)
##  system   x86_64, mingw32
##  ui       RTerm
##  language (EN)
##  collate  English_United States.utf8
##  ctype    English_United States.utf8
##  tz       America/Los_Angeles
##  date     2023-07-28
##  pandoc   3.1.1 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  ! package       * version date (UTC) lib source
##    bslib           0.4.2   2022-12-16 [1] CRAN (R 4.2.2)
##    cachem          1.0.8   2023-05-01 [1] CRAN (R 4.2.3)
##    callr           3.7.3   2022-11-02 [1] CRAN (R 4.2.2)
##    class           7.3-21  2023-01-23 [2] CRAN (R 4.2.3)
##    classInt        0.4-9   2023-02-28 [1] CRAN (R 4.2.2)
##    cli             3.6.1   2023-03-23 [1] CRAN (R 4.2.3)
##    colorspace      2.1-0   2023-01-23 [1] CRAN (R 4.2.2)
##    conflicted    * 1.2.0   2023-02-01 [1] CRAN (R 4.2.2)
##    crayon          1.5.2   2022-09-29 [1] CRAN (R 4.2.1)
##    DBI             1.1.3   2022-06-18 [1] CRAN (R 4.2.1)
##    devtools        2.4.5   2022-10-11 [1] CRAN (R 4.2.1)
##    digest          0.6.31  2022-12-11 [1] CRAN (R 4.2.2)
##    dplyr         * 1.1.2   2023-04-20 [1] CRAN (R 4.2.3)
##    e1071           1.7-13  2023-02-01 [1] CRAN (R 4.2.2)
##    ellipsis        0.3.2   2021-04-29 [1] CRAN (R 4.2.1)
##    evaluate        0.21    2023-05-05 [1] CRAN (R 4.2.3)
##    fansi           1.0.4   2023-01-22 [1] CRAN (R 4.2.2)
##    fastmap         1.1.1   2023-02-24 [1] CRAN (R 4.2.2)
##    forcats       * 1.0.0   2023-01-29 [1] CRAN (R 4.2.2)
##    fs              1.6.2   2023-04-25 [1] CRAN (R 4.2.3)
##    generics        0.1.3   2022-07-05 [1] CRAN (R 4.2.1)
##    ggplot2       * 3.4.2   2023-04-03 [1] CRAN (R 4.2.3)
##    glue            1.6.2   2022-02-24 [1] CRAN (R 4.2.1)
##    gtable          0.3.3   2023-03-21 [1] CRAN (R 4.2.3)
##    here          * 1.0.1   2020-12-13 [1] CRAN (R 4.2.1)
##    hms             1.1.3   2023-03-21 [1] CRAN (R 4.2.3)
##    htmltools       0.5.5   2023-03-23 [1] CRAN (R 4.2.3)
##    htmlwidgets     1.6.2   2023-03-17 [1] CRAN (R 4.2.3)
##    httpuv          1.6.9   2023-02-14 [1] CRAN (R 4.2.2)
##    jquerylib       0.1.4   2021-04-26 [1] CRAN (R 4.2.1)
##    jsonlite        1.8.4   2022-12-06 [1] CRAN (R 4.2.2)
##    KernSmooth      2.23-20 2021-05-03 [2] CRAN (R 4.2.3)
##    knitr           1.42    2023-01-25 [1] CRAN (R 4.2.2)
##    later           1.3.0   2021-08-18 [1] CRAN (R 4.2.1)
##    lifecycle       1.0.3   2022-10-07 [1] CRAN (R 4.2.1)
##    lubridate     * 1.9.2   2023-02-10 [1] CRAN (R 4.2.2)
##    magrittr        2.0.3   2022-03-30 [1] CRAN (R 4.2.1)
##    memoise         2.0.1   2021-11-26 [1] CRAN (R 4.2.1)
##    mime            0.12    2021-09-28 [1] CRAN (R 4.2.0)
##    miniUI          0.1.1.1 2018-05-18 [1] CRAN (R 4.2.1)
##    munsell         0.5.0   2018-06-12 [1] CRAN (R 4.2.1)
##    pillar          1.9.0   2023-03-22 [1] CRAN (R 4.2.3)
##    pkgbuild        1.4.0   2022-11-27 [1] CRAN (R 4.2.2)
##    pkgconfig       2.0.3   2019-09-22 [1] CRAN (R 4.2.1)
##    pkgload         1.3.2   2022-11-16 [1] CRAN (R 4.2.2)
##    prettyunits     1.1.1   2020-01-24 [1] CRAN (R 4.2.1)
##    processx        3.8.1   2023-04-18 [1] CRAN (R 4.2.3)
##    profvis         0.3.7   2020-11-02 [1] CRAN (R 4.2.1)
##    promises        1.2.0.1 2021-02-11 [1] CRAN (R 4.2.1)
##    proxy           0.4-27  2022-06-09 [1] CRAN (R 4.2.1)
##    ps              1.7.5   2023-04-18 [1] CRAN (R 4.2.3)
##    purrr         * 1.0.1   2023-01-10 [1] CRAN (R 4.2.2)
##    qs            * 0.25.5  2023-02-22 [1] CRAN (R 4.2.2)
##    R6              2.5.1   2021-08-19 [1] CRAN (R 4.2.1)
##    RApiSerialize   0.1.2   2022-08-25 [1] CRAN (R 4.2.1)
##    Rcpp            1.0.10  2023-01-22 [1] CRAN (R 4.2.2)
##  D RcppParallel    5.1.7   2023-02-27 [1] CRAN (R 4.2.3)
##    readr         * 2.1.4   2023-02-10 [1] CRAN (R 4.2.2)
##    remotes         2.4.2   2021-11-30 [1] CRAN (R 4.2.1)
##    rlang           1.1.1   2023-04-28 [1] CRAN (R 4.2.3)
##    rmarkdown       2.21    2023-03-26 [1] CRAN (R 4.2.3)
##    rprojroot       2.0.3   2022-04-02 [1] CRAN (R 4.2.1)
##    rstudioapi      0.14    2022-08-22 [1] CRAN (R 4.2.1)
##    sass            0.4.6   2023-05-03 [1] CRAN (R 4.2.3)
##    scales        * 1.2.1   2022-08-20 [1] CRAN (R 4.2.1)
##    sessioninfo     1.2.2   2021-12-06 [1] CRAN (R 4.2.1)
##    sf            * 1.0-12  2023-03-19 [1] CRAN (R 4.2.3)
##    shiny           1.7.4   2022-12-15 [1] CRAN (R 4.2.2)
##    stringfish      0.15.7  2022-04-13 [1] CRAN (R 4.2.1)
##    stringi         1.7.12  2023-01-11 [1] CRAN (R 4.2.2)
##    stringr       * 1.5.0   2022-12-02 [1] CRAN (R 4.2.2)
##    tibble        * 3.2.1   2023-03-20 [1] CRAN (R 4.2.3)
##    tidyr         * 1.3.0   2023-01-24 [1] CRAN (R 4.2.2)
##    tidyselect      1.2.0   2022-10-10 [1] CRAN (R 4.2.1)
##    tidyverse     * 2.0.0   2023-02-22 [1] CRAN (R 4.2.2)
##    timechange      0.2.0   2023-01-11 [1] CRAN (R 4.2.2)
##    tzdb            0.4.0   2023-05-12 [1] CRAN (R 4.2.3)
##    units           0.8-1   2022-12-10 [1] CRAN (R 4.2.2)
##    urlchecker      1.0.1   2021-11-30 [1] CRAN (R 4.2.1)
##    usethis         2.1.6   2022-05-25 [1] CRAN (R 4.2.1)
##    utf8            1.2.3   2023-01-31 [1] CRAN (R 4.2.2)
##    vctrs           0.6.2   2023-04-19 [1] CRAN (R 4.2.3)
##    withr           2.5.0   2022-03-03 [1] CRAN (R 4.2.1)
##    xfun            0.39    2023-04-20 [1] CRAN (R 4.2.3)
##    xtable          1.8-4   2019-04-21 [1] CRAN (R 4.2.1)
##    yaml            2.3.7   2023-01-23 [1] CRAN (R 4.2.2)
## 
##  [1] C:/R/win-library/4.2
##  [2] C:/Program Files/R/R-4.2.3/library
## 
##  D ── DLL MD5 mismatch, broken installation.
## 
## ──────────────────────────────────────────────────────────────────────────────

Import and Prepare Data

# Define file paths for raw data for WQ measurements, nutrients, and chlorophyll
fp_raw_data <- dir(path = here("data/interim"), pattern = "^raw.+qs$", full.names = TRUE)

# Import and combine raw data
df_raw_data <- map(fp_raw_data, qread) %>% list_rbind()
# Define factor level for Region
region_lev <- c(
  "North",
  "SouthCentral",
  "Confluence",
  "Suisun Bay",
  "Suisun Marsh"
)

# Define factor level for Season
season_lev <- c(
  "Winter",
  "Spring",
  "Summer",
  "Fall"
)

# Define factor level for Parameter
param_lev <- c(
  "Temperature",
  "Salinity",
  "Secchi",
  "DissAmmonia",
  "DissNitrateNitrite",
  "DissOrthophos",
  "Chlorophyll"
)

# Prepare raw data to run the summary plot function on
df_raw_data_c <- df_raw_data %>% 
  mutate(
    Region = factor(Region, levels = region_lev),
    Season = factor(Season, levels = season_lev),
    Parameter = factor(Parameter, levels = param_lev)
  )

Create Plots

# Create function for sampling effort plots
plot_samp_effort <- function(df) {
  df %>% 
    count(YearAdj, Season, Region, name = "num_samples") %>% 
    ggplot(aes(x = YearAdj, y = Region, fill = num_samples)) +
    geom_tile() +
    facet_grid(rows = vars(Season)) +
    scale_x_continuous(breaks = breaks_pretty(20), expand = expansion()) +
    scale_fill_viridis_c(name = "Number of Samples") +
    theme_bw() +
    theme(
      axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
      legend.position = "top"
    )
}
# Create plots for each Parameter
ndf_se_plt <- df_raw_data_c %>% 
  nest(.by = Parameter, .key = "df_data") %>% 
  mutate(plt = map(df_data, .f = plot_samp_effort)) %>% 
  arrange(Parameter) %>% 
  mutate(Parameter = as.character(Parameter))

Sampling Effort

Temperature

Salinity

Secchi

DissAmmonia

DissNitrateNitrite

DissOrthophos

Chlorophyll