Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ Authors@R: c(
person("Clara", "Jégousse", email = "cat3@hi.is", role = "ctb"),
person("Hui", "Chen", email = "huichen@zju.edu.cn", role = "ctb"),
person("Miaozhu", "Li", email = "miaozhu.li@duke.edu", role = "ctb"),
person("Winston", "Chang", role = c("ctb", "cph"), comment = "staticimports.R")
person("iTerm2-Color-Schemes contributors", role = c("ctb", "cph"),
comment = "iTerm2-Color-Schemes project"),
person("Winston", "Chang", role = c("ctb", "cph"),
comment = "staticimports.R")
)
Maintainer: Nan Xiao <me@nanx.me>
Description: A collection of 'ggplot2' color palettes inspired by
Expand Down
5 changes: 5 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

export(example_barplot)
export(example_scatterplot)
export(iterm_palettes)
export(pal_aaas)
export(pal_atlassian)
export(pal_bmj)
Expand All @@ -13,6 +14,7 @@ export(pal_frontiers)
export(pal_futurama)
export(pal_gsea)
export(pal_igv)
export(pal_iterm)
export(pal_jama)
export(pal_jco)
export(pal_lancet)
Expand Down Expand Up @@ -44,6 +46,7 @@ export(scale_color_frontiers)
export(scale_color_futurama)
export(scale_color_gsea)
export(scale_color_igv)
export(scale_color_iterm)
export(scale_color_jama)
export(scale_color_jco)
export(scale_color_lancet)
Expand Down Expand Up @@ -71,6 +74,7 @@ export(scale_colour_frontiers)
export(scale_colour_futurama)
export(scale_colour_gsea)
export(scale_colour_igv)
export(scale_colour_iterm)
export(scale_colour_jama)
export(scale_colour_jco)
export(scale_colour_lancet)
Expand Down Expand Up @@ -98,6 +102,7 @@ export(scale_fill_frontiers)
export(scale_fill_futurama)
export(scale_fill_gsea)
export(scale_fill_igv)
export(scale_fill_iterm)
export(scale_fill_jama)
export(scale_fill_jco)
export(scale_fill_lancet)
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
and `scale_fill_primer()` (#62, #63).
- Add the Atlassian Design System palette in `scale_color_atlassian()`
and `scale_fill_atlassian()` (#64).
- Add 400+ iTerm palettes in `scale_color_iterm()` and `scale_fill_iterm()` (#67).

## Improvements

Expand Down
81 changes: 81 additions & 0 deletions R/discrete-iterm.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#' iTerm color palettes
#'
#' ANSI terminal color palettes sourced from the iterm2-color-schemes project.
#' Each theme provides normal and bright variants.
#'
#' @param palette Palette name. See [iterm_palettes()] for available options.
#' @param variant Variant of the palette. One of `"normal"`, `"bright"`.
#' @param alpha Transparency level, a real number in (0, 1].
#' See `alpha` in [grDevices::rgb()] for details.
#'
#' @export pal_iterm
#'
#' @importFrom grDevices col2rgb rgb
#' @importFrom scales manual_pal
#'
#' @references
#' <https://github.com/mbadolato/iTerm2-Color-Schemes>
#'
#' @examples
#' library("scales")
#' show_col(pal_iterm("Rose Pine")(6))
#' show_col(pal_iterm("Rose Pine", variant = "bright", alpha = 0.7)(6))
pal_iterm <- function(palette = iterm_palettes(), variant = c("normal", "bright"), alpha = 1) {
palette <- match.arg(palette)
variant <- match.arg(variant)

if (alpha > 1L || alpha <= 0L) stop("alpha must be in (0, 1]")

raw_cols <- ggsci_db_iterm[[palette]][[variant]]
raw_cols_rgb <- col2rgb(raw_cols)
alpha_cols <- rgb(
raw_cols_rgb[1L, ], raw_cols_rgb[2L, ], raw_cols_rgb[3L, ],
alpha = alpha * 255L, names = names(raw_cols),
maxColorValue = 255L
)

manual_pal(unname(alpha_cols))
}

#' iTerm color scales
#'
#' See [pal_iterm()] for details.
#'
#' @inheritParams pal_iterm
#' @param ... Additional parameters for [ggplot2::discrete_scale()].
#'
#' @export scale_color_iterm
#'
#' @importFrom ggplot2 discrete_scale
#'
#' @rdname scale_iterm
#'
#' @examples
#' example_scatterplot() + scale_color_iterm("Rose Pine")
#' example_barplot() + scale_fill_iterm("Rose Pine")
scale_color_iterm <- function(palette = iterm_palettes(), variant = c("normal", "bright"), alpha = 1, ...) {
palette <- match.arg(palette)
variant <- match.arg(variant)
if (is_ggplot2_350()) {
discrete_scale("colour", palette = pal_iterm(palette, variant, alpha), ...)
} else {
discrete_scale("colour", scale_name = "iterm", palette = pal_iterm(palette, variant, alpha), ...)
}
}

#' @export scale_colour_iterm
#' @rdname scale_iterm
scale_colour_iterm <- scale_color_iterm

#' @export scale_fill_iterm
#' @importFrom ggplot2 discrete_scale
#' @rdname scale_iterm
scale_fill_iterm <- function(palette = iterm_palettes(), variant = c("normal", "bright"), alpha = 1, ...) {
palette <- match.arg(palette)
variant <- match.arg(variant)
if (is_ggplot2_350()) {
discrete_scale("fill", palette = pal_iterm(palette, variant, alpha), ...)
} else {
discrete_scale("fill", scale_name = "iterm", palette = pal_iterm(palette, variant, alpha), ...)
}
}
Loading
Loading