---
title: "Colours"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Colours}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 8
)

library(StrategyUnitTheme)
library(ggplot2)
library(tibble)
library(forcats)
library(dplyr)
```

The `StrategyUnitTheme` package contains funcions that return the colours used
in the [Strategy Unit's](https://www.strategyunitwm.nhs.uk/) branding. This
Vignette will explain how to use these functions to set the colours in plots
created with [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html).

## List available colours

To view all of the possible colours available, you can use the following
function:

```{r show colours list}
su_theme_cols()
```

The `su_theme_cols` function returns a named vectored of hex-encoded RGB values
of colours.

If you are only interested in specific colours, you can specify them as
arguments to the function, like so:

```{r show specific colours}
su_theme_cols("orange", "red", "slate")
```

Or, you can use one of the available palettes:

```{r show a palette}
su_theme_cols(palette = "main")
```

The documentation for `su_theme_cols` lists all of the palettes
that are available to use.

These colours are shown below.

```{r show the colours, echo=FALSE, fig.height = 6}
# note, this is not the recommended way to use the colours in a ggplot, this is
# just to display the available colours

colours <- su_theme_cols()

tibble(name = names(colours) %>%
         fct_inorder() %>%
         fct_rev()) %>%
  ggplot(aes(name, fill = name)) +
  geom_bar() +
  scale_fill_manual(values = colours) +
  coord_flip() +
  theme_void() +
  theme(legend.position = "none",
        axis.text.y = element_text())
```

## Using the theme with ggplot2

If you want to use the Strategy Unit's colours in your plots, you can use the
`scale_colour_su` and `scale_fill_su` functions. For example, if you wish to
use the main palette:

```{r using the main colour palette in a plot}
ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Species)) +
  geom_point() +
  scale_colour_su()
```

You can also change specify a different palette, and reverse the order like so:

```{r specifying a reversed palette}
ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Species)) +
  geom_point() +
  scale_colour_su(palette = "reds", reverse = TRUE)
```

These functions by default are for discrete data. If you have continuous then
you need to set the `discrete` argument to `FALSE`.

```{r continous fill}
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
  geom_tile() +
  scale_fill_su(discrete = FALSE, palette = "oranges", reverse = TRUE)
```
