knitr::opts_chunk$set( collapse = TRUE, comment = "#>", message = F, warning = F, fig.align = 'center' ) library(tbeptools) library(mapview) library(sf) sf_use_s2(FALSE) sf::st_crs(trnpts) <- 4326 sf::st_crs(trnlns) <- 4326 # spelling::spell_check_files("vignettes/seagrasstransect.Rmd")
Each year, TBEP partners collect seagrass transect data at fixed locations in Tampa Bay. Data have been collected since the mid 1990s and are hosted online at the Tampa Bay Water Atlas by the University of South Florida Water Institute. Functions are available in tbeptools for downloading, analyzing, and plotting these data.
There are two datasets included in tbeptools that show the actively monitored transect locations in Tampa Bay. The trnpts
dataset is a point object for the starting location of each transect and the trnlns
dataset is a line object showing the approximate direction and length of each transect beginning at each point in trnpts
. Each dataset also includes the MonAgency
column that indicates which monitoring agency collects the data at each transect.
trnpts trnlns
The two datasets are sf()
(simple features) objects and are easily mapped with mapview()
to view their locations.
cols <- c("#E16A86", "#CB7F2F", "#9F9400", "#50A315", "#00AC79", "#00AAB7", "#009ADE", "#A87BE4", "#DA65C3") mapview(trnpts, zcol = 'MonAgency', lwd = 0, legend = F, homebutton = F, col.regions = cols) + mapview(trnlns, zcol = 'MonAgency', homebutton = F, layer.name = 'Monitoring Agency', lwd = 4, color = cols)
The transect data can be downloaded from the Water Atlas using the read_transect()
function. The only required argument for this function is training
, which indicates if you want to download training data or the complete dataset, i.e., training = TRUE
or training = FALSE
(default). In the former case, a small dataset is downloaded that includes only data collected during an annual training event. These are primarily used internally by TBEP staff to assess precision among different training crews. The data are downloaded as a JSON object and formatted internally using the read_formtransect()
function. Shoot density is reported as number of shoots per square meter and is corrected for the quadrat size entered in the raw data. Abundance is reported as a numeric value from 0 -5 for Braun-Blanquet coverage estimates and blade length is in cm.
# import training data traindat <- read_transect(training = TRUE) # view the data traindat
Change the training
argument to FALSE
to download the entire transect database. This may take a few seconds.
# import entire transct dataset as JSON transect <- read_transect(training = FALSE) # view the data transect
The columns in the complete transect database describe the crew (Crew
), the monitoring agency (MonitoringAgency
), sample date (Date
), transect name (Transect
), the meter location for the quadrat along the transect (Site
, m), depth at the site (Depth
, cm), Seagrass species (Savspecies
), distance of the seagrass edge on the transect (SeagrassEdge
, m), the seagrass variable (var
), average value of the variable (aveval
), and standard deviation of the variable if appropriate (sdval
).
If the raw, unformatted transect data are preferred, use the raw = TRUE
argument for read_transect()
.
# raw transect data transectraw <- read_transect(training = FALSE, raw = TRUE) # view the data transectraw
The rest of the seagrass functions in tbeptools were developed to work with the complete database. Only the show_complot()
function (see below) was developed for the training data. The rest of the functions can be used to estimate and plot frequency occurrence data.
The anlz_transectocc()
function summarizes frequency occurrence for all transects and dates by collapsing species results across quadrats within each transect. Abundance and frequency occurrence are estimated as in Sherwood et al. 2017, equations 1 and 2 [@tbep0917]. In short, frequency occurrence is estimated as the number of instances a species was observed along a transect divided by the number of placements along a transect and average abundance was estimated as the sum of species-specific Braun-Blanquet scores divided by the number of placements along a transect. The estimates are obtained for all seagrass species, including Caulerpa spp. (attached macroalgae), Dapis (cyanobacteria), and Chaetomorpha (drift green algae), whereas all attached and drift algae species are aggregated. Drift or attached macroalgae and cyanobacteria (Dapis) estimates may not be accurate prior to 2021.
transectocc <- anlz_transectocc(transect) transectocc
The second function, anlz_transectave()
, takes the results from anlz_transectocc()
and estimates annual results across major bay segments for all seagrass species by averaging frequency occurrence across transects. This function is used internally within the show_transectmatrix()
function to create summary plots. The frequency occurrence estimates are also binned into categories for simple trend assessments, e.g., red < 25%, orange 25-50%, yellow 50-75%, and green > 75%. Results for specific bay segments and annual ranges can be filtered with the bay_segment
and yrrng
arguments.
transectave <- anlz_transectave(transectocc) transectave
The third function, anlz_transectavespp()
, takes the results from anlz_transectocc()
and estimates annual averages across major bay segments as in the last function, but results are retained for individual species. This function is used internally within the show_transectavespp()
function to create summary plots. All summaries are aggregated across the selected bay segments, i.e., the default is to average by species/year across all segments. Results for an individual bay segment can be returned with the appropriate argument, e.g., by using bay_segment = 'OTB'
to select only Old Tampa Bay. Results can also be filtered by specific species using the species
argument, where the default is to return all. Caulerpa spp., Dapis spp., and Chaetomorpha spp. are also included.
transectavespp <- anlz_transectavespp(transectocc) transectavespp
Results for individual bay segments from anlz_transectavespp()
can be retained by setting the by_seg
argument to TRUE
. Note that totals are not returned in this case.
transectavespp <- anlz_transectavespp(transectocc, by_seg = TRUE) transectavespp
There is one plotting function for the training data. The show_compplot()
function is used to compare training data between crews for a selected species (species
argument) and variable (varplo
argument).
show_compplot(traindat, yr = 2024, site = '3', species = 'Halodule', varplo = 'Abundance', base_size = 14)
The rest of the plotting functions work with the complete transect data. Data for an individual transect can be viewed with the show_transect()
function by entering the transect (site) number, species (one to many), and variable to plot. The plot shows relative values for the selected species and variable by distance along the transect (x-axis) and year of sampling (y-axis). The plots provide an overall summary of temporal and spatial changes in the selected seagrass metric for an individual location.
show_transect(transect, site = 'S3T10', species = 'Halodule', varplo = 'Abundance')
The plot can also be produced as a plotly interactive plot by setting plotly = TRUE
inside the function. Note that the size legend is merged with the species legend, where the point size is the average abundance for the species. The sizes can be viewed on mouseover of each point.
show_transect(transect, site = 'S3T10', species = 'Halodule', varplo = 'Abundance', plotly = T)
The show_transect()
function can also be used to plot multiple species. One to many species can be provided to the species
argument.
show_transect(transect, site = 'S3T10', species = c('Halodule', 'Syringodium', 'Thalassia'), varplo = 'Abundance')
The plots can also be separated into facets for each species using facet = TRUE
. This is useful to reduce overplotting of multiple species found at the same location.
show_transect(transect, site = 'S3T10', species = c('Halodule', 'Syringodium', 'Thalassia'), varplo = 'Abundance', facet = TRUE)
The show_transectsum()
function provides an alternative summary of data at an individual transect. This plot provides a quick visual assessment of how frequency occurrence or abundance for multiple species has changed over time at a selected transect. Unlike show_transect()
, the plot shows aggregated results across quadrats along the transect and uses summarized data from the anlz_transectocc()
function as input.
show_transectsum(transectocc, site = 'S3T10')
A summary matrix of frequency occurrence estimates across all species can be plotted with show_transectmatrix()
. This uses results from the anlz_transectocc()
and anlz_transectave()
functions to estimate annual averages by bay segment. The continuous frequency occurrence estimates are binned into color categories described above, as in Table 1 in [@tbep0816].
show_transectmatrix(transectocc)
The default color scheme is based on arbitrary breaks at 25, 50, and 75 percent frequency occurrence. These don't necessarily translate to any ecological breakpoints. Use neutral = TRUE
to use a neutral and continuous color palette.
show_transectmatrix(transectocc, neutral = T)
The matrix can also be produced as a plotly interactive plot by setting plotly = TRUE
inside the function.
show_transectmatrix(transectocc, plotly = T)
Time series plots of annual averages of frequency occurrence estimates by each species can be shown with the show_transectavespp()
function. By default, all estimates are averaged across all bay segments for each species. The plot is a representation of Figure 2 in [@tbep0816].
show_transectavespp(transectocc)
Results for individual segments and species can be returned with the bay_segment
and species
arguments. Use the argument total = FALSE
to omit the total frequency occurrence from the plot.
show_transectavespp(transectocc, bay_segment = 'LTB', species = c('Syringodium', 'Thalassia'), total = FALSE)
The plot can also be produced as a plotly interactive plot by setting plotly = TRUE
inside the function.
show_transectavespp(transectocc, bay_segment = 'LTB', species = c('Syringodium', 'Thalassia'), plotly = T)
As an alternative to plotting the species averages over time with show_transectavespp()
, a table can be created by setting asreact = TRUE
. Filtering options that apply to the plot also apply to the table, e.g., filtering by the four major bay segments and specific year ranges. Also note that the totals are not returned in the table.
show_transectavespp(transectocc, asreact = T, bay_segment = c('HB', 'OTB', 'MTB', 'LTB'), yrrng = c(2006, 2012))
All of the above describes methods in tbeptools for working with transect monitoring data. Seagrass coverage maps are also created approximately biennially by the Southwest Florida Water Management District, available at https://data-swfwmd.opendata.arcgis.com/. The seagrass
data object included with the package shows Tampa Bay coverage total for each year of available data, including a 1950s reference estimate. The show_seagrasscoverage()
function creates the flagship seagrass coverage graphic to report on changes over time from these data.
show_seagrasscoverage(seagrass)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.