13 Structure & Function: Biomass of Trophic Guilds

Data Type: Tabular Data (within eco_indicators)

Spatial Scope: Maritimes

Duration 1970-2022

Source: Bundy et al. 2017

13.1 Introduction to Indicator

One proximal indicator of changes in ecosystem structure is the biomass of communities in trophic guilds (Bundy, Gomez, and Cook 2017). Trophic guild biomass is quantified through RV surveys, wherein species are categorized into guilds by their prey. Survey records are then q-corrected and aggregated per region.

Changes in biomass of trophic guilds can indicate changes in predation pressure for prey species, and indicate large-scale patterns of change in the resource flow within ecosystems.

For information on categorization into trophic guilds, see (Bundy, Gomez, and Cook 2017).

13.2 View Data


library(tidyr)
library(plotly)
library(stringr)

plotly_df <- data@data %>% inner_join(global_cols2)

# function to create plot with dropdown menu ------------------------------
make_biomassTG_dropdown_plot <- function(df,
                                      year_col   = "year",
                                      region_col = "region",
                                      value_suffix = "_value") {

  # convert to long format
  long <- df %>%
    janitor::clean_names() %>%
    pivot_longer(
      cols = ends_with(value_suffix),
      names_to = "metric",
      values_to = "value"
    ) %>%
    # remove suffix
    mutate(
      metric = str_remove(metric, "_value")
    ) %>%
    # drop NAs (some regions don't have data for some variables or years)
    tidyr::drop_na(value)

  # find all metrics and regions
  metrics <- unique(long$metric)
  regions <- unique(long[[region_col]])

  # clean names for dropdown panels, helper
  pretty_label <- function(x) str_to_title(gsub("_", " ", x)) %>%  gsub("Lb","Large B",.) %>% gsub("Mb","Medium B",.) %>% gsub("Biomass ","",.)

  # build plot -----------------
  p <- plot_ly()

  # Add bar traces: metric1 has region1..K, metric2 has region1..K, ...
  for (metric_i in seq_along(metrics)) {
    m <- metrics[metric_i]

    for (region_i in regions) {
      dat <- long %>%
        filter(metric == m, .data[[region_col]] == region_i) %>%
        group_by(.data[[year_col]],color, region_group, region_group_label) %>% 
        summarise(value = sum(value), .groups = "drop") %>%
        arrange(.data[[year_col]])
      
        group_name <- unique(dat$region_group)
        color <- unique(dat$color)

      # If a region truly has no data for that metric, add an empty trace
      # (keeps trace indexing stable)
      if (nrow(dat) == 0) {
        dat <- tibble::tibble(!!year_col := integer(0), value = numeric(0))
      }

      p <- p %>% add_bars(
        data = dat,
        x = ~.data[[year_col]],
        y = ~value,
        name = as.character(region_i),
        legendgroup = group_name,
        legendgrouptitle = list(
          text = ifelse(group_name == "ESS",
                        "Eastern Scotian Shelf Zones",
                        "Western Scotian Shelf Zones"
          )),
        showlegend = (metric_i == 1),
        visible = (metric_i == 1),
        marker = list(color = color),
        hovertemplate = paste0("<b>", region_i,":</b> ","%{y:,.2s}<extra></extra>")      )
    }
  }

  n_regions <- length(regions)
  n_traces  <- length(metrics) * n_regions

  buttons <- lapply(seq_along(metrics), function(metric_i) {
    vis <- rep(FALSE, n_traces)
    shl <- rep(FALSE, n_traces)

    idx_start <- (metric_i - 1) * n_regions + 1
    idx_end   <- metric_i * n_regions
    vis[idx_start:idx_end] <- TRUE
    shl[idx_start:idx_end] <- TRUE

    list(
      method = "update",
      args = list(
        list(visible = vis, showlegend = shl),
        list(
          title = pretty_label(metrics[metric_i]),
          yaxis = list(title = "Biomass (tonnes)")
        )
      ),
      label = pretty_label(metrics[metric_i])
    )
  })

  p %>%
    layout(
      barmode = "stack",
      hovermode = "x unified",
      title = pretty_label(metrics[1]),
      xaxis = list(title = str_to_title(year_col), type = "category"),  # keep one bar per year
      yaxis = list(title = "Biomass (tonnes)", fixedrange = TRUE),
      legend = list(
        x = 1.02, xanchor = "left",
        y = 1,    yanchor = "top",
        groupclick = "toggleitem",
        itemdoubleclick = FALSE
      ),
      updatemenus = list(list(
        type = "dropdown",
        x = 0, xanchor = "left",
        y = 1.15, yanchor = "top",
        buttons = buttons
      )),
      margin = list(r = 180, t = 80)
    )
}

# usage:
p <- make_biomassTG_dropdown_plot(plotly_df)
p <- p %>% config(displayModeBar= F)
  
p 

Figure 13.1: Biomass of Trophic Guilds in Scotian Shelf regions; 1970-2022. Use dropdown box to select a target taxonomic or functional group, and click legend to toggle regions.

13.4 Relevance to Research and Stock Assessments

Changes in biomass of trophic guilds represent changes in the structure and energy flow of marine communities. Biomass of trophic guilds can be expected to change as a result of fishing pressure which generally targets high trophic level groups. Fishing pressure can therefore lead to trophic cascades, increasing abundance of some trophic groups, but in turn, increasing predation pressure on lower levels via trophic cascades (Frank et al. 2005).

13.5 Variable Definitions

variable description unit
year Year of data collection
region Region over which data are summarized
biomass_{GROUP}_value Biomass of select Trophic Guilds within regions tonnes

13.6 Additional Data

Structural Change variables (within eco_indicators) contain data for 4VN, 4VS, 4W, 4X, ESS, and WSS. All are shown on this page, but note that NAFO divisions are nested within Scotian Shelf regions.

13.7 Get the Data

library(marea)
data('eco_indicators')
plot(eco_indicators)

References

Bundy, Alida, Catalina Gomez, and Adam M. Cook. 2017. “Guidance Framework for the Selection and Evaluation of Ecological Indicators.” Canadian Technical Report of Fisheries and Aquatic Sciences 3232. Dartmouth, Nova Scotia, Canada: Fisheries; Oceans Canada, Bedford Institute of Oceanography. https://waves-vagues.dfo-mpo.gc.ca/Library/40648886.pdf.
Frank, Kenneth T, Brian Petrie, Jae S Choi, and William C Leggett. 2005. “Trophic Cascades in a Formerly Cod-Dominated Ecosystem.” Science 308 (5728): 1621–23.