## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
library(ggplot2)
library(ggprism)
library(patchwork)

## ---- fig.width=3.6, fig.asp=0.9----------------------------------------------
# create a base plot to compare colour scales
base <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(aes(colour = factor(cyl), shape = factor(cyl)), size = 3) + 
  theme_prism() + 
  theme(legend.position = c(0.8, 0.8))

base

## ---- fig.width=7.2, fig.asp=0.5----------------------------------------------
# compare manual colour scale with prism colour scale
p1 <- base + scale_colour_manual(values = c("blue", "red", "green3"))
p2 <- base + scale_colour_prism()

p1 + p2

## -----------------------------------------------------------------------------
# see names and lengths of available scale_colour_prism() palettes
lengths(ggprism_data$colour_palettes)

## ---- fig.width=7.2, fig.asp=0.5----------------------------------------------
# try out some different colour palettes
p1 <- base + scale_colour_prism(palette = "purple_passion")
p2 <- base + scale_colour_prism(palette = "candy_bright")

p1 + p2

## ---- fig.width=4.5-----------------------------------------------------------
preview_theme("flames")

## ---- fig.width=3.6, fig.asp=0.9----------------------------------------------
# create a base plot to compare fill scales
base <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(aes(fill = factor(cyl), shape = factor(cyl)), size = 3) + 
  theme_prism() + 
  theme(legend.position = c(0.8, 0.8)) + 
  scale_shape_prism(palette = "filled")

base

## ---- fig.width=7.2, fig.asp=0.5----------------------------------------------
# compare manual fill scale with prism fill scale
p1 <- base + scale_fill_manual(values = c("blue", "red", "green3"))
p2 <- base + scale_fill_prism()

p1 + p2

## -----------------------------------------------------------------------------
# see names and lengths of available scale_fill_prism() palettes
lengths(ggprism_data$fill_palettes)

## ---- fig.width=7.2, fig.asp=0.5----------------------------------------------
# try out some different fill palettes
p1 <- base + scale_fill_prism(palette = "colorblind_safe")
p2 <- base + scale_fill_prism(palette = "neon")

p1 + p2

## ---- fig.width=4.5-----------------------------------------------------------
preview_theme("diazo")

## -----------------------------------------------------------------------------
# see names and lengths of available scale_shape_prism() palettes
lapply(ggprism_data$shape_palettes, nrow)

## ---- fig.width=3.6, fig.asp=0.9----------------------------------------------
# define a function for convenience
show_shapes <- function(palette) {
  df_shapes <- ggprism_data$shape_palettes[[palette]][, -1]
  df_shapes$pch_f <- factor(df_shapes$pch, levels = df_shapes$pch)

  ggplot(df_shapes, aes(x = 0, y = 0, shape = pch)) +
    geom_point(aes(shape = pch), size = 5, fill = 'red') +
    scale_shape_identity() +
    facet_wrap(~ pch_f) +
    theme_void()
}

# show the shapes in the palette "complete"
show_shapes("complete")

## ---- fig.width=3.6, fig.asp=0.9----------------------------------------------
# create a base plot to compare shape scales
base <- ggplot(mpg, aes(x = displ, y = cty)) +
  geom_point(aes(colour = class, fill = class, shape = class)) + 
  theme_prism(base_size = 11, base_fontface = "plain", border = TRUE) +
  theme(plot.subtitle = element_text(face = "bold"),
        legend.position = c(0.8, 0.75),
        legend.key.height = unit(10, "pt")) +
  coord_cartesian(clip = "off") + 
  scale_colour_prism(palette = "floral") + 
  scale_fill_prism(palette = "floral")

base

## ---- fig.width=7, fig.height=6-----------------------------------------------
# compare shape scales
p1 <- base
p2 <- base + scale_shape_prism(palette = "default") + 
  labs(subtitle = "default")
p3 <- base + scale_shape_prism(palette = "filled") + 
  labs(subtitle = "filled")
p4 <- base + scale_shape_prism(palette = "complete") + 
  labs(subtitle = "complete")

(p1 + p2) / (p3 + p4)

