R/plot_emission_intensity.R

Defines functions check_plot_emission_intensity plot_emission_intensity

Documented in plot_emission_intensity

#' Create an emission intensity plot
#'
#' @param data A data frame like the output of `prep_emission_intensity()`.
#'
#' @seealso [sda].
#'
#' @return An object of class "ggplot".
#'
#' @export
#' @examples
#' # plot with `qplot_emission_intensity()` parameters
#' data <- subset(sda, sector == "cement" & region == "global") %>%
#'   prep_emission_intensity(span_5yr = TRUE, convert_label = to_title)
#'
#' plot_emission_intensity(data)
plot_emission_intensity <- function(data) {
  check_plot_emission_intensity(data, env = list(data = substitute(data)))

  metrics <- distinct(data, .data$emission_factor_metric)
  colours <- palette_colours[seq_len(nrow(metrics)), "hex", drop = FALSE]
  specs <- dplyr::bind_cols(metrics, colours)

  data <- left_join(data, specs, by = metric(data))

  ggplot(
    data = data,
    aes(
      x = .data$year,
      y = .data$emission_factor_value,
      colour = .data$label
    )
  ) +
    geom_line() +
    expand_limits(y = 0) +
    scale_x_date(expand = expansion(mult = c(0, 0.1))) +
    scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
    scale_colour_manual(values = unique(data$hex)) +
    theme_2dii()
}

check_plot_emission_intensity <- function(data, env) {
  stopifnot(is.data.frame(data))
  crucial <- c(prep_emission_factor_crucial, "label")
  hint_if_missing_names(abort_if_missing_names(data, crucial), "sda")
  enforce_single_value <- "sector"
  abort_if_multiple(data, enforce_single_value)
  abort_if_has_zero_rows(data, env = env)
  abort_if_too_many_lines(data, max = 7)

  invisible(data)
}

Try the r2dii.plot package in your browser

Any scripts or data that you put into this service are public.

r2dii.plot documentation built on May 29, 2024, 5:22 a.m.