R/scales.R

Defines functions scale_fill_bde_c scale_color_bde_c scale_fill_bde_d scale_color_bde_d

Documented in scale_color_bde_c scale_color_bde_d scale_fill_bde_c scale_fill_bde_d

#' BdE scales for `ggplot2`.
#'
#' @description
#'
#' Scales to be used with the `ggplot2` package. Discrete palettes are named
#' as `scale_*_bde_d` while continuous palettes are named `scale_*_bde_c`.
#'
#' @seealso [bde_vivid_pal()], [ggplot2::discrete_scale()],
#'   [ggplot2::continuous_scale()]
#'
#' @family bde_plot
#'
#' @export
#'
#' @return A `ggplot2` color scale.
#'
#' @rdname scales_bde
#'
#' @name scales_bde
#'
#' @param palette Name of the BdE palette to apply. One of "bde_vivid_pal",
#'   "bde_rose_pal". See [bde_pals()] for details.
#'
#' @param ... Further arguments of [ggplot2::discrete_scale()] or
#'   [ggplot2::continuous_scale()].
#'
scale_color_bde_d <- function(palette = c("bde_vivid_pal", "bde_rose_pal"),
                              ...) { # nocov start

  palette <- match.arg(palette)
  valid_pals <- c("bde_vivid_pal", "bde_rose_pal")

  if (!palette %in% valid_pals) {
    stop("palette should be one of: ", paste0(valid_pals, collapse = ", "))
  }

  cols <- switch(palette,
    "bde_vivid_pal" = bde_vivid_pal(),
    "bde_rose_pal" = bde_rose_pal()
  )
  ggplot2::discrete_scale(
    aesthetics = "color",
    scale_name = palette,
    palette = cols,
    ...
  )
  # nocov end
}

#' @rdname scales_bde
#' @name scales_bde
#' @export
scale_fill_bde_d <- function(palette = c("bde_vivid_pal", "bde_rose_pal"),
                             ...) { # nocov start
  palette <- match.arg(palette)
  valid_pals <- c("bde_vivid_pal", "bde_rose_pal")

  if (!palette %in% valid_pals) {
    stop("palette should be one of :", paste0(valid_pals, collapse = ", "))
  }

  cols <- switch(palette,
    "bde_vivid_pal" = bde_vivid_pal(),
    "bde_rose_pal" = bde_rose_pal()
  )
  ggplot2::discrete_scale(
    aesthetics = "fill",
    scale_name = palette,
    palette = cols,
    ...
  )
  # nocov end
}


#' @rdname scales_bde
#' @name scales_bde
#' @export
scale_color_bde_c <- function(palette = c("bde_vivid_pal", "bde_rose_pal"),
                              ...) { # nocov start
  palette <- match.arg(palette)
  valid_pals <- c("bde_vivid_pal", "bde_rose_pal")

  if (!palette %in% valid_pals) {
    stop("palette should be one of :", paste0(valid_pals, collapse = ", "))
  }

  cols <- switch(palette,
    "bde_vivid_pal" = bde_vivid_pal()(6),
    "bde_rose_pal" = c(bde_rose_pal()(6)[1:3], bde_rose_pal()(6)[6:4])
  )
  ggplot2::continuous_scale(
    aesthetics = "color",
    scale_name = palette,
    palette = scales::gradient_n_pal(cols),
    ...
  )
  # nocov end
}

#' @rdname scales_bde
#' @name scales_bde
#' @export
scale_fill_bde_c <- function(palette = c("bde_vivid_pal", "bde_rose_pal"),
                             ...) { # nocov start
  palette <- match.arg(palette)
  valid_pals <- c("bde_vivid_pal", "bde_rose_pal")

  if (!palette %in% valid_pals) {
    stop("palette should be one of :", paste0(valid_pals, collapse = ", "))
  }

  cols <- switch(palette,
    "bde_vivid_pal" = bde_vivid_pal()(6),
    "bde_rose_pal" = c(bde_rose_pal()(6)[1:3], bde_rose_pal()(6)[6:4])
  )
  ggplot2::continuous_scale(
    aesthetics = "fill",
    scale_name = palette,
    palette = scales::gradient_n_pal(cols),
    ...
  )
  # nocov end
}

Try the tidyBdE package in your browser

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

tidyBdE documentation built on July 10, 2023, 2:01 a.m.