The spatial visualization of the Quesnel Lake sampling stations was generated in R using a combination of provincial geographic datasets and local project metadata. The two-dimensional shoreline boundary of Quesnel Lake comes from the British Columbia Freshwater Atlas using the bcdata R package, where it was isolated from the provincial dataset, transformed to the standard WGS84 coordinate reference system (EPSG: 4326), and stored locally as a GeoPackage. The physical coordinates for the CTD casts were extracted from the 2023 CTD metadata file. Sites were filtered down to the specific target locations (ST10, ST4, ST8Zoo, ST5, Sill East, and Sill West). The final visualization was constructed using the ggplot2 and sf spatial packages.
This block isolates the weather data to create a massive widescreen timeline spanning multiple years. It plots continuous temperature readings from both stations, introduces a 4°C reference line (the temperature of maximum density for fresh water), and highlights historical upwelling.
This code isolates CTD data (Temperature and Depth) that was captured only during recorded upwelling periods. It then creates individual temperature-by-depth profile graphs for each upwelling day and arrays them into a large grid.
This code loops through a directory containing raw 2024 CTD data
files, standardizes their naming conventions, and maps them to field
metadata. It generates a 6-facet wrapping plot, restricting depth to the
top 100m, and uniquely colors the lines using a high-contrast time
gradient (viridis turbo) mapped to the date of the
cast.
##6. This will be my Schmitt Stability code
This is a bar chart of chlorophyll concentrations averaged each year and shown with error bars. This will highlight how 2023 was higher than other years.
This is a bar chart of the average TP and TDP concentration across the study period. Each year has its standard deviation shown.
This section iterates over three separate years. It calculates the daily averages for chlorophyll across active sites, underlays upwelling events, and generates an individual graph for each year directly in the HTML output.
This script aligns low-frequency data (daily chlorophyll averages) with high-frequency data (continuous weather station temperatures). It merges weather datasets from two locations (Plato and West Basin) to fill temporal gaps and plots a dual-axis graph for each year.
This expands on the previous gap-filled timeline by drawing
semi-transparent geom_rect polygons over the dual-axis
plots to represent when upwelling events were actively occurring.
## [1] "--- Point-Biserial Correlation Results (All Years Combined) ---"
## # A tibble: 2 × 3
## SiteGroup Point_Biserial_R P_Value
## <chr> <dbl> <dbl>
## 1 Far field 0.0511 0.412
## 2 Sill -0.0306 0.645
## [1] "--- Data-Driven Optimal Lag Times (TDP to Chl) ---"
## # A tibble: 3 × 4
## # Groups: Year [3]
## Year Best_Lag Max_R P_val
## <dbl> <dbl> <dbl> <dbl>
## 1 2023 56 -0.0501 0.716
## 2 2024 0 0.366 0.0170
## 3 2025 56 0.0669 0.579
This section visualizes the relative abundance of the zooplankton community in 2025, specifically filtering out juvenile life stages (nauplii, copepodids, and juvenile cladocera). Because juvenile forms can often dominate raw counts and obscure the community structure of fully developed populations, removing them provides a clearer picture of the established adult taxa diversity across the different sites.
This section calculates the estimated total zooplankton abundance standardized per cubic meter (\(m^3\)) of water filtered during the net tow. This is done by estimating the total zooplankton caught in the 30m tow (extrapolating from the subsampled split fractions), calculating the volume of the cylindrical water column pulled through the 20cm diameter net, and dividing the total count by that volume.
This graph displays the total volumetric density (zooplankton per cubic meter) over time at each site specifically for the year 2025. This data is aggregated across all species classifications to show the total zooplankton biomass at a given time. The colors distinguish the spatially distinct regions of the lake: Sill sites are represented in shades of blue, while far-field stations (ST) are represented in shades of red.
## 34. Regional Average Zooplankton Density Over Time (2025) This graph
groups the individual sampling stations into two broader regions: Sill
sites and Far-field (ST) sites. The data calculates the total volumetric
density for each site on a given date, and then averages those densities
within their respective regions to show broader spatial trends across
the lake for 2025. Additionally, known upwelling events are overlaid to
visualize potential relationships between physical mixing events and
zooplankton biomass.
This plot visualizes historical concentrations of Nitrate (NO3), Ammonia (NH3), and Soluble Reactive Silicon (SRS). The dataset is strictly filtered to five key stations, which have been relabeled to match current site naming conventions. Because Nitrogen is measured in µg/L and Silicon in mg/L, the parameters are faceted into separate horizontal panels.
This graph displays both Soluble Reactive Phosphorus (SRP) and Total Phosphorus (TP) on the same axes. Overlaying them directly highlights what fraction of the total phosphorus pool was immediately biologically available (SRP) at any given station over time.
This section compares the total raw count of zooplankton against their total estimated biomass. By splitting these metrics into separate panels, we can identify unique ecological events: for example, a spike in abundance without a corresponding spike in biomass indicates an explosion of very small juvenile zooplankton, while high biomass with low counts indicates a population dominated by large, mature individuals.
This plot visualizes the macro-level yearly averages of Nitrate (NO3), Ammonia (NH3), and Soluble Reactive Silicon (SRS) across the five primary stations. By aggregating the data annually, short-term seasonal noise is smoothed out, allowing us to identify long-term shifts in the lake’s baseline nutrient loading.
This graph displays both the yearly average Soluble Reactive Phosphorus (SRP) and Total Phosphorus (TP) on the same axes. Looking at this on an annual scale highlights years of overall elevated phosphorus loading and whether those increases were driven by immediately bio-available phosphorus (SRP) or bound particulate matter.
This section compares the yearly average raw count of zooplankton against their yearly average estimated biomass. Decoupling these metrics on an annual basis helps identify long-term shifts in the zooplankton community structure—such as a multi-year trend toward higher abundance but lower total biomass, which would indicate a systemic shift toward smaller taxa.