Introduction to simplecolors

Trying to find a good color palette in R is difficult. I think most people search google for ggplot colors and end up looking at some wild image like shown below on the right. These colors are used in grDevices::colors and are actually from the X11 colors that were developed in the 1980s. Unfortunately, they have inconsistent names and the lightness/saturation are all over the place. Using the colorspace::HLS() function however, a smaller, consistent set of colors allows palettes to be made both within one color or across hues.

Here’s a comparison of the base X11 colors (left) and the simplecolors (right).

Construction

To get started there are 8 hues, 4 types of saturation, and 5 levels of lightness plus a greyscale. To use a color, just combine the 3 parts:

optional saturation color name lightness
bright red 1
"" orange 2
muted yellow
dull 5
grey 0-6

For example, the following code will return the corresponding hex values

The sc() function

This function stands for simplecolors. You can specify base colors

sc("red", "violet", "pink")
#> [1] "#E44444" "#9444E4" "#E444E4"

or add modifiers

sc("brightblue4", "mutedorange5", "grey3")
#> [1] "#003CB3" "#4D3C19" "#949494"

Palettes

There are multiple ways to access palettes

sc_within(hue = "teal", light = 3:5, sat = "bright")
#> [1] "#29FFFF" "#00B3B3" "#006666"
sc_across(palette = "OTVGy", light = 4, sat = "muted")
#> [1] "#86682D" "#2D8686" "#592D86" "#595959"

Types of outputs

There are 3 main outputs for these palettes that can be specified via return =

Using sc_within()

#> [1] "#9DB9F1" "#4479E4" "#16439C" "#0D2659"
color_name hex
blue2 #9DB9F1
blue3 #4479E4
blue4 #16439C
blue5 #0D2659

Using sc_across()

#> [1] "#E44444" "#E4AF44" "#E4E444"
color_name hex
red3 #E44444
orange3 #E4AF44
yellow3 #E4E444

Here is a list of all colors abbreviations you can use in the palette

color letter
red R
orange O
yellow Y
green G
teal T
blue B
violet V
pink P
grey Gy

sc_red(), sc_blue(), etc…

There is also a sc_within() palette defaulted for each color

#> [1] "#FFCCCC" "#FF8F8F" "#FF2929" "#B30000"
color_name hex
blue5 #0D2659
blue4 #16439C
blue3 #4479E4
blue2 #9DB9F1

And here’s an example where you might use it in a ggplot

All colors