Four years spent in the most beautiful place in the world, immortalized in an R color palette package. May the colors of Washington State and the Pacific Northwest live on in our presentation figures forever.

Palettes are pulled from photos I took in some of the dreamiest, most colorful, PNW-iest places I know. The Pantone Studio iPhone app helped me extract colors, and Chroma.js Color Palette Helper helped me adjust values to ensure that all palettes are color-blind safe to be used for attractive and inclusive data viz.

Structure of the code was inspired by the wesanderson and LaCroixColoR packages. See more examples on twitter.

Installation Palettes Functions Examples As Seen In Contact

CRAN Downloads DOI

Install Package

# from CRAN

# or dev version:



 [1] "Starfish" "Shuksan"  "Bay"      "Winter"   "Lake"     "Sunset"   "Shuksan2" 
 [8] "Cascades" "Sailboat" "Moth" "Spring"   "Mushroom" "Sunset2"  "Anemone"    

## Palettes

<img src="ReadMeFigures/WAcolors.Starfish.jpg">

  - Low Tide -- San Juan Islands, Washington 


<img src="ReadMeFigures/WAcolors.Shuksan.jpg">

- Mount Shuksan from Mount Baker Ski Resort -- North Cascades, Washington


<img src="ReadMeFigures/WAcolors.Bay.jpg">

- A nice night for a late-summer sunset paddle -- Bellingham Bay, Washington


<img src="ReadMeFigures/WAcolors.Winter.jpg">

- Seattle Snowpocalypse 2019 -- Anacortes, Washington


<img src="ReadMeFigures/WAcolors.Lake.jpg">

- Best after-work beer spot West of the Mississippi --  Whistle Lake, Anacortes, Washington


<img src="ReadMeFigures/WAcolors.Sunset.jpg">

- Washington Park sunset -- Anacortes, Washington 


<img src="ReadMeFigures/WAcolors.Shuksan2.jpg">

- Mount Shuksan, golden hour -- North Cascades, Washington 

<img src="ReadMeFigures/WAcolors.Cascades.jpg">

- Watson Lake Trail End -- North Cascades, Washington


<img src="ReadMeFigures/WAcolors.Moth.jpg">

- The most beautiful moth  -- Vendovi Island, Washington


<img src="ReadMeFigures/WAcolors.Sailboat.jpg">

- S/V Funky Dory, the maiden voyage -- Anacortes, Washington


<img src="ReadMeFigures/WAcolors.Sunset2.jpg">

- Oyster Dome Sunset -- Chuckanut, Washington


<img src="ReadMeFigures/WAcolors.Spring.jpg">

- Cherry Blossom Season -- Anacortes, Washington


<img src="ReadMeFigures/WAcolors.Anemone.jpg">

- Fieldtrip -- Anacortes, Washington 


<img src="ReadMeFigures/WAcolors.Mushroom.jpg">

- Life on a log -- Orcas Island, Washington


## Building Palettes 

Use the `pnw_palette()` function to build and view palettes. Inputs are 'name', 'n', and 'type' (continuous or discrete). 'Name' is required. If 'n' is blank, function will assume n is equal to the number of colors in the palette (5-8), but if n > palette length, it will automatically interpolate colors between. If 'type' is missing, the function will assume "discrete" if n < palette length, and "continuous" if n > palette length. 





Example Plots

Palettes can be easily integrated into Base R imaging or ggplot2.

pal <- pnw_palette("Shuksan",100)
image(volcano, col = pal)

pal=pnw_palette("Lake",5, type = "discrete")
ggplot(diamonds, aes(carat, fill = cut)) +
  geom_density(position = "stack") +
  scale_fill_manual(values=pal)  +

ggplot(data.frame(x = rnorm(1e4), y = rnorm(1e4)), aes(x = x, y = y)) +
  geom_hex() +
  coord_fixed() +
  scale_fill_gradientn(colours = pal) +

  # Or, to switch the order, use rev(), see below
  scale_fill_gradientn(colours = rev(pal))

ggplot(data = penguins, 
       aes(x = flipper_length_mm,
           y = body_mass_g)) +
  geom_point(aes(color = species, 
                 shape = species),
             size = 3) +
  scale_color_manual(values = pnw_palette("Bay",3)) +
  labs(title = "Penguin size, Palmer Station LTER",
       subtitle = "Flipper length and body mass for Adelie, Chinstrap and Gentoo Penguins",
       x = "Flipper length (mm)",
       y = "Body mass (g)",
       color = "Penguin species",
       shape = "Penguin species") +

```r pal <- pnw_palette("Anemone",3) ToothGrowth$dose <- as.factor(ToothGrowth$dose) ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) + geom_violin(trim=FALSE)+ geom_boxplot(width=0.1, fill="white")+ labs(title="Plot of length by dose",x="Dose (mg)", y = "Length")+ scale_fill_manual(values=pal)+ theme_classic()

<center><img src=""></center>

pal <- pnw_palette("Winter",100)
countydata %>%
  left_join(counties, by = "county_fips") %>%
  filter(state_name =="Washington") %>%
  ggplot(mapping=aes(long,lat,group = group, fill = horate)) +
  geom_polygon(color="black",size=.25) +
  scale_fill_gradientn(colours = pal) +
  coord_map(projection="albers",lat0=39,lat1=45) +
  theme(legend.title = element_text(),
        legend.key.width = unit(.5,"in")) +
  labs(fill="Homeownership rate") +

As Seen In:

Did you use PNWColors in your publication or other? Please share to grow the list!

Lawlor and Arellano 2020, "Bay" palette


Reach me at or @Jake_Lawlor1

For Citation Information, see here: DOI

This work was supported by NSF grant #1538626

jakelawlor/PNWColors documentation built on Sept. 30, 2020, 3:14 a.m.