R for the Rest of Us: A Statistics-Free Introduction comes out June 25th. Or you can read the online version today. Check it out →

# Setting color and fill Scales

## This lesson is locked

If the video is not playing correctly, you can watch it in a new window

### Transcript

Click on the transcript to go to that point in the video. Please note that transcripts are auto generated and may contain minor inaccuracies.

View code shown in video
``````# Load Packages -----------------------------------------------------------

library(tidyverse)

# Import Data -------------------------------------------------------------

# Setting color and fill Scales -------------------------------------------

# We can change the color or fill scale using a scale function.

# The function scale_color_manual() allows us to manually specify colors to use.

ggplot(data = penguins,
mapping = aes(x = bill_length_mm,
y = bill_depth_mm,
color = island)) +
geom_point() +
scale_color_manual(values = c("orange", "dodgerblue", "green"))

# We can also use built-in palettes.

# The scale_color_viridis_d() function (the d means it works with discrete data)
# is a great way to get colorblind-friendly palettes.

ggplot(data = penguins,
mapping = aes(x = bill_length_mm,
y = bill_depth_mm,
color = island)) +
geom_point() +
scale_color_viridis_d()

# The scale_color_viridis_d() function also has several built-in palettes.
# You can use them as follows.

ggplot(data = penguins,
mapping = aes(x = bill_length_mm,
y = bill_depth_mm,
color = island)) +
geom_point() +
scale_color_viridis_d(option = "A")

ggplot(data = penguins,
mapping = aes(x = bill_length_mm,
y = bill_depth_mm,
color = island)) +
geom_point() +
scale_color_viridis_d(option = "H")

# There are many other built-in palettes. Just type scale_color_ and RStudio
# will autocomplete some other options for you.

# We can use scale_fill_viridis_d() for the fill aesthetic property.

ggplot(data = penguin_bill_length_by_island,
mapping = aes(x = island,
y = mean_bill_length,
fill = island)) +
geom_col() +
scale_fill_viridis_d()
``````

``````# Load Packages -----------------------------------------------------------

library(tidyverse)

# Import Data -------------------------------------------------------------

# Setting color and fill Scales -------------------------------------------

# You can find a list of all colors you can use here:
# https://www.datanovia.com/en/blog/awesome-list-of-657-r-color-names/

# Now update the last bar chart you made by manually specifying colors of the bars

# scale_fill_manual()

``````

The PDF shown in the video has gone missing, but you can see a list of all named colors here.

There are a lot of other packages that give you color/fill palettes you can work with. See especially the paleteer package, which is a meta palette package, give you access to palettes from many other packages.

## Have any questions? Put them below and we will help you out!

You need to be signed-in to comment on this post. Login.

Hi David, the link to the pdf is no longer working. Would you please post an updated one? thx

#### Dalton Bailey

Is there a way to save a custom color palette in RStudio? Say I want to use my company's branded colors, but don't want to have to type in the hex code each time.

#### David Keyes Founder

Yes, absolutely!

I recorded a video to show you how this works. I showed you a simple way to do this plus a more complicated way using custom functions.

You can find the code that I use in the video here.

Let me know if this helps!

#### Dalton Bailey

This is a perfect answer to what I was wondering. I was not looking forward to typing in hex codes each time I wanted to make some branded visuals. Thanks so much!

#### David Keyes Founder

Glad it was helpful! And, at the risk of overwhelming you, I'll mention that, if you want to go to the next level, you can create a custom package that has these custom functions. That way, you load your package and then have access to your custom functions.

We regularly do this for clients. See, for example, the `omni` package. This is obviously way more advanced than what I demonstrated, but I thought you might enjoy seeing what's possible.