Update scale_*()

This commit is contained in:
gnoblet 2022-11-20 18:55:50 -04:00
parent 8dbabe7303
commit 04936f2263

191
R/scale.R
View file

@ -1,77 +1,114 @@
#' Color scale constructor for REACH or AGORA colors #' Color scale constructor for REACH or AGORA colors
#' #'
#' @param initiative Either "reach" or "agora #' @param initiative Either "reach" or "agora
#' @param palette Palette name from `pal_reach()` or `pal_agora()` #' @param palette Palette name from `pal_reach()` or `pal_agora()`
#' @param discrete Boolean indicating whether color aesthetic is discrete or not #' @param discrete Boolean indicating whether color aesthetic is discrete or not
#' @param reverse Boolean indicating whether the palette should be reversed #' @param reverse Boolean indicating whether the palette should be reversed
#' @param ... Additional arguments passed to discrete_scale() or #' @param ... Additional arguments passed to discrete_scale() or
#' scale_color_gradient(), used respectively when discrete is TRUE or FALSE #' scale_color_gradient(), used respectively when discrete is TRUE or FALSE
#' @return A color scale for ggplot #' @return A color scale for ggplot
#' #'
#' @export #' @export
scale_color <- function(initiative = "reach", palette = "main", discrete = TRUE, reverse = FALSE, ...) { scale_color <- function(initiative = "reach", palette = "main", discrete = TRUE, reverse = FALSE, reverse_guide = TRUE, ...) {
if (initiative == "reach") { if (initiative == "reach") {
pal <- pal_reach( pal <- pal_reach(
palette = palette, palette = palette,
reverse = reverse, reverse = reverse,
color_ramp_palette = TRUE, color_ramp_palette = TRUE,
show_palettes = FALSE show_palettes = FALSE
) )
} else if (initiative == "agora") { } else if (initiative == "agora") {
pal <- pal_agora( pal <- pal_agora(
palette = palette, palette = palette,
reverse = reverse, reverse = reverse,
color_ramp_palette = TRUE, color_ramp_palette = TRUE,
show_palettes = FALSE show_palettes = FALSE
) )
} else { } else {
rlang::abort(c("Wrong initiative parameter input", "*" = paste0(initiative, "is not an option"), "i" = "Parameter 'initiative' should be one of 'reach' or 'agora'")) rlang::abort(c("Wrong initiative parameter input", "*" = paste0(initiative, "is not an option"), "i" = "Parameter 'initiative' should be one of 'reach' or 'agora'"))
} }
if (discrete) { if (discrete) {
ggplot2::discrete_scale("colour", paste0(initiative, "_", palette), palette = pal, ...) ggplot2::discrete_scale(
} else { "colour",
ggplot2::scale_color_gradientn(colours = pal(256), ...) paste0(initiative, "_", palette),
} palette = pal,
} guide = ggplot2::guide_legend(
title.position = "top",
draw.ulim = TRUE,
draw.llim = TRUE,
#' Fill scale constructor for REACH or AGORA colors ticks.colour = "#F1F3F5",
#' reverse = reverse_guide),
#' @param initiative Either "reach" or "agora ...)
#' @param palette Palette name from `pal_reach()` or `pal_agora()` } else {
#' @param discrete Boolean indicating whether color aesthetic is discrete or not ggplot2::scale_color_gradientn(
#' @param reverse Boolean indicating whether the palette should be reversed colours = pal(256),
#' @param ... Additional arguments passed to discrete_scale() or guide = ggplot2::guide_colorbar(
#' scale_fill_gradient(), used respectively when discrete is TRUE or FALSE title.position = "top",
#' @return A fill scale for ggplot draw.ulim = TRUE,
#' draw.llim = TRUE,
#' @export ticks.colour = "#F1F3F5",
scale_fill <- function(initiative = "reach", palette = "main", discrete = TRUE, reverse = FALSE, ...) { reverse = reverse_guide
),
if (initiative == "reach") { ...)
pal <- pal_reach( }
palette = palette, }
reverse = reverse,
color_ramp_palette = TRUE,
show_palettes = FALSE
) #' Fill scale constructor for REACH or AGORA colors
} else if (initiative == "agora") { #'
pal <- pal_agora( #' @param initiative Either "reach" or "agora
palette = palette, #' @param palette Palette name from `pal_reach()` or `pal_agora()`
reverse = reverse, #' @param discrete Boolean indicating whether color aesthetic is discrete or not
color_ramp_palette = TRUE, #' @param reverse Boolean indicating whether the palette should be reversed
show_palettes = FALSE #' @param ... Additional arguments passed to discrete_scale() or
) #' scale_fill_gradient(), used respectively when discrete is TRUE or FALSE
} else { #' @return A fill scale for ggplot
rlang::abort(c("Wrong initiative parameter input", "*" = paste0(initiative, "is not an option"), "i" = "Parameter 'initiative' should be one of 'reach' or 'agora'")) #'
} #' @export
scale_fill <- function(initiative = "reach", palette = "main", discrete = TRUE, reverse = FALSE, reverse_guide = TRUE, ...) {
if (discrete) {
ggplot2::discrete_scale("fill", paste0(initiative, "_", palette), palette = pal, ...) if (initiative == "reach") {
} else { pal <- pal_reach(
ggplot2::scale_fill_gradientn(colours = pal(256), ...) palette = palette,
} reverse = reverse,
} color_ramp_palette = TRUE,
show_palettes = FALSE
)
} else if (initiative == "agora") {
pal <- pal_agora(
palette = palette,
reverse = reverse,
color_ramp_palette = TRUE,
show_palettes = FALSE
)
} else {
rlang::abort(c("Wrong initiative parameter input", "*" = paste0(initiative, "is not an option"), "i" = "Parameter 'initiative' should be one of 'reach' or 'agora'"))
}
if (discrete) {
ggplot2::discrete_scale(
"fill",
paste0(initiative, "_", palette),
palette = pal,
guide = ggplot2::guide_legend(
title.position = "top",
draw.ulim = TRUE,
draw.llim = TRUE,
ticks.colour = "#F1F3F5",
reverse = reverse_guide),
...)
} else {
ggplot2::scale_fill_gradientn(
colours = pal(256),
guide = ggplot2::guide_colorbar(
title.position = "top",
draw.ulim = TRUE,
draw.llim = TRUE,
ticks.colour = "#F1F3F5",
reverse = reverse_guide),
...)
}
}