## ----options, include = FALSE, echo = FALSE, results = 'asis'-----------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

# Increase default figure size for all plots in this vignette
knitr::opts_chunk$set(
  fig.width = 7,   # default is 4.9
  fig.height = 5,  # default is 3.5
  dpi = 96         # better for screen readability
)


## ----install_CRAN, eval=FALSE, message=FALSE, warning=FALSE-------------------
# install.packages("colorify")

## ----install_GitHub, eval=FALSE, message=FALSE, warning=FALSE-----------------
# pak::pkg_install("colorify", dependencies = TRUE, upgrade = TRUE)

## ----library, eval=TRUE, message=FALSE, warning=FALSE-------------------------
library(colorify)

## ----base_colors, eval=FALSE, message=FALSE, warning=FALSE--------------------
# grDevices::colors()

## ----colorify_basic, eval=TRUE, message=FALSE, warning=FALSE------------------
colorify(n = 10, plot = TRUE)

## ----colorify_basic_seed, eval=TRUE, message=FALSE, warning=FALSE-------------
c <- colorify(10, plot = TRUE, seed = 1337)

## ----colorify_custom_colors, eval=TRUE, message=FALSE, warning=FALSE----------
c <- colorify(colors = c("red", "white", "blue"), n = 5, plot = TRUE)

## ----colorify_named_colors, eval=TRUE, message=FALSE, warning=FALSE-----------
c <- colorify(colors = c("red", "white", "blue"), n = 5, colors_names = paste0("name", rep(1:5)), plot = TRUE)

## ----colorify_order_colors, eval=TRUE, message=FALSE, warning=FALSE-----------
# set integer for the ordering starting position
c <- colorify(colors = c("red", "white", "blue"), n = 5, order = 2, plot = TRUE)
c <- colorify(colors = c("red", "white", "blue"), n = 5, order = 3, plot = TRUE)
# negative integer inverses the order
c <- colorify(colors = c("red", "white", "blue"), n = 5, order = -1, plot = TRUE)

## ----colorify_colors_transparency, eval=TRUE, message=FALSE, warning=FALSE----
c <- colorify(colors = c("red", "white", "blue"), n = 5, alpha = .25, plot = TRUE)

## ----colorify_available_palette, eval=TRUE, message=FALSE, warning=FALSE------
c <- colorify(colors = c("Okabe-Ito"), plot = TRUE)
# note the 10th color is generated
c <- colorify(colors = c("Okabe-Ito"), plot = TRUE, n = 10)
# note that blue and yellow are cut, as only 10 colors are requested.
c <- colorify(colors = c("Okabe-Ito", "red", "blue", "yellow"), plot = TRUE, n = 10)

## ----colorify_color_gradients, eval=TRUE, message=FALSE, warning=FALSE--------
g1 <- colorify(colors = c("orange", "red", "white", "blue", "orange"), nn = 100, plot = TRUE)
g2 <- colorify(colors = c("pastel2"), nn = 100, plot = TRUE)

## ----colorify_plotting, eval=TRUE, message=FALSE, warning=FALSE---------------
g1 <- colorify(colors = c("orange", "red", "white", "blue", "orange"), nn = 15, plot = "l")
g1 <- colorify(colors = c("orange", "red", "white", "blue", "orange"), nn = 15, plot = "i")
g1 <- colorify(colors = c("orange", "red", "white", "blue", "orange"), nn = 15, plot = "il")

## ----colorify_values_and_factors, eval=TRUE, message=FALSE, warning=FALSE-----
g3 <- colorify(100, colors = c("viridis"), plot = TRUE)
# r = red, f = factor: rf = 2 to multiply all red values
g4 <- colorify(100, colors = c("viridis"), rf = 2, plot = TRUE)
# v = value: rv = 50 to increase all red values by 50, on a scale between 0-100
g5 <- colorify(100, colors = c("viridis"), rv = 50, plot = TRUE)
# first, multiply red values by 2, then increase red values by 50
g6 <- colorify(100, colors = c("viridis"), rf = 2, rv = 50, plot = TRUE)
# first, increase red values by 50, then multiply red values by 2
g7 <- colorify(100, colors = c("viridis"), rv = 50, rf = 2, plot = TRUE)
# float factor decrease values by multiplication
g8 <- colorify(100, colors = c("viridis"), bf = .5, plot = TRUE)
# negative values work to decrease values
g9 <- colorify(100, colors = c("viridis"), bv = -100, gv = -50, plot = TRUE)

## ----colorify_min_and_max, eval=TRUE, message=FALSE, warning=FALSE------------
g3 <- colorify(100, colors = c("viridis"), plot = TRUE)
g8 <- colorify(100, colors = c("viridis"), bf = .5, plot = TRUE)
# same factor decrease, yet limited by minimum value
g10 <- colorify(100, colors = c("viridis"), bf = .5, bmin = 40, plot = TRUE)
# need factor/value change to use min/max value
g11 <- colorify(100, colors = c("viridis"), bf = 1, bmax = 40, plot = TRUE)
# can use them in combination
g12 <- colorify(100, colors = c("viridis"), bf = 1, bmin = 40, bmax = 40,  plot = TRUE)

## ----colorify_color_locking, eval=TRUE, message=FALSE, warning=FALSE----------
c <- colorify(colors = c("pastel2"), nn = 30, plot = TRUE)
# lock by index
c <- colorify(colors = c("pastel2"), nn = 30, colors_lock = c(4, 5, 6, 10, 11, 12), lf = 0.5, plot = TRUE)
# inverse lock by index
c <- colorify(colors = c("pastel2"), nn = 30, colors_lock = -c(4:12), lf = 0.5, plot = TRUE)
# lock by patterns
c <- colorify(colors = c("pastel2"), nn = 30, colors_lock = c(TRUE, FALSE), lf = 0.5, plot = TRUE)
c <- colorify(colors = c("pastel2"), nn = 30, colors_lock = c(TRUE, FALSE, FALSE), lf = 0.5, plot = TRUE)

## ----colorify_paired_gradients, eval=TRUE, message=FALSE, warning=FALSE-------
color_map <- colorify(colors = c("red", "white", "blue"), colors_map = c(0, 500, 1000))
# note the map is then given values to map back to the given color ranges from colors_map
m1 <- colorify(colors = color_map(0:1000), plot = TRUE)

## ----display_basic, eval=TRUE, message=FALSE, warning=FALSE-------------------
display_palettes()

## ----display_basic_n, eval=TRUE, message=FALSE, warning=FALSE-----------------
p1 <- display_palettes(10)
# display 100 colors per palette
p2 <- display_palettes(100)

## ----display_zoomed_view, eval=TRUE, message=FALSE, warning=FALSE-------------
# display palettes by index
display_palettes(i_palettes = 50:75)
display_palettes(i_palettes = c(1, 5, 10, 20, 40, 100, 119))

## ----display_common, eval=TRUE, message=FALSE, warning=FALSE------------------
display_palettes(10, "rcolorbrewer")
display_palettes(10, "viridis")
display_palettes(10, "rainbow") # grDevices palettes

## ----display_border, eval=TRUE, message=FALSE, warning=FALSE------------------
display_palettes(n = 10, i_palettes = 1:10, border = TRUE)

## ----scale_colorify_ggplot2_setup, eval=FALSE, message=FALSE, warning=FALSE----
# install.packages("ggplot2")
# library(ggplot2)

## ----scale_colorify_ggplot2_color_non_discrete, eval=TRUE, message=FALSE, warning=FALSE----
dsub <- subset(ggplot2::diamonds, x > 5 & x < 6 & y > 5 & y < 6)
dsub$diff <- with(dsub, sqrt(abs(x - y)) * sign(x - y))

ggplot2::ggplot(dsub, ggplot2::aes(x, y, colour = diff)) +
  ggplot2::geom_point() +
  scale_color_colorify(n = 4, colors = "viridis") +
  ggplot2::theme_bw()

## ----scale_colorify_ggplot2_color_discrete, eval=TRUE, message=FALSE, warning=FALSE----
p <- ggplot2::ggplot(mtcars, ggplot2::aes(wt, mpg))

p + ggplot2::geom_point(size = 4, ggplot2::aes(colour = factor(cyl))) +
  ggplot2::theme_bw() +
  scale_color_colorify(discrete = TRUE, colors = c("red", "blue", "yellow"))

## ----scale_colorify_ggplot2_fill_non_discrete, eval=TRUE, message=FALSE, warning=FALSE----
dat <- data.frame(x = rnorm(10000), y = rnorm(10000))

ggplot2::ggplot(dat, ggplot2::aes(x = x, y = y)) +
  ggplot2::geom_hex() + ggplot2::coord_fixed() +
  scale_fill_colorify(colors = "viridis", n = 4) + ggplot2::theme_bw()

## ----scale_colorify_ggplot2_fill_discrete, eval=TRUE, message=FALSE, warning=FALSE----
df <- data.frame(category = c("A", "B", "C", "D"), value = c(10, 23, 15, 8))

ggplot2::ggplot(df, ggplot2::aes(x = category, y = value, fill = category)) +
  ggplot2::geom_bar(stat = "identity") +
  scale_fill_colorify(discrete = TRUE, colors = "viridis")


## ----colortistry, eval=TRUE, message=FALSE, warning=FALSE---------------------
colors_list <- list()
for (i in seq(100)) {
  colors_list[[i]] <- colorify(n = 100, colors = "rainbow", colors_lock = rep(c(TRUE, FALSE, FALSE, FALSE, FALSE), 20), hf = 25 / i, lf = i / 20)
  if (i %% 3) colors_list[[i]] <- colorify(n = 100, colors = "rainbow", colors_lock = rep(c(FALSE, FALSE, TRUE, FALSE, FALSE), 20), hf = 30 / i, lf = i / 20)
  if (i %% 4) colors_list[[i]] <- colorify(n = 100, colors = "rainbow", colors_lock = rep(c(FALSE, FALSE, FALSE, TRUE, FALSE), 20), hf = 50 / i, lf = i / 40)
  if (i %% 5) colors_list[[i]] <- colorify(n = 100, colors = "rainbow", colors_lock = rep(c(FALSE, TRUE, FALSE, FALSE, FALSE), 20), hf = 50 / i, sf = i / 50)
}
colortistry(colors_list)
# and with borders
colortistry(colors_list, border_color = "black")

## ----session_info-------------------------------------------------------------
sessionInfo()

