A collection of color palettes inspired by plants and pop culture.
- Author: Chenxin Li, Ph.D., Assistant Research Scientist at Department of Crop & Soil Sciences and Center for Applied Genetic Technologies, University of Georgia.
- Contact: [email protected] | @chenxinli2.bsky.social
Attempts have been made to produce palettes that are friendly to deuteranopia, the most common type of red/green color blindness. Please cite/acknowledge this repository if used.
Please also explore other palette collections.
- Wisteria
- Higanbana (red spider lily)
- Geissorhiza radians
- Bocchi the Rock!
- Frieren 1
- Frieren 2 - the field of flower
- Frieren 3 - that scene
- Ubel
- Yu-Gi-Oh - "the Three Egyptian Gods"
- Bird of paradise
- Love in a mist
- Blue iris
- Example usage
- Summary
Wisteria is a climbing plant with beautiful flowers (photo credit: Home Depot).
wisteria <- c("#A6A6A6", "#CDAA7D", "#EEE685", "#FFBBFF", "#D1EEEE", "#6495ED", "#6959CD")
(Photo credit: Wikipedia)
higanbana <- c("#FED731", "#FDA888", "#EF5960", "#E70F25", "#8C030B", "#450110", "#1F0A0A")
(Photo credit: Andreas Fleischmann)
gra <- c( "#200200", "#BF051E", "#FC3E57", "#E3C9EC", "#C29CE2", "#811ED0", "#36044A")
Bocchi the Rock! is about a teenager girl overcoming her debilitating social anxiety while performing in a band as the guitarist. It's extremely relatable (at least to me) but also utterly creative and expressive. I highly recommend. Clip from YouTube
(Photo credit: Bocchi the Rock! official website).
bocchi <- c("#F2C9D5", "#B43E44", "#FADF92" , "#496496", "#282828", "#904869")
Frieren Beyond Journey's End takes place in a fantasy world after the hero's party defeated the demon lord. Frieren, the elven mage of the party, explores the concepts of time, lost, and emotions. It has beautiful visuals and music, intriguing lore, well-written characters, and masterful story telling. 100% recommend. One of the best, if not the best, anime of recent years (as of 2024).
(Clipped from Season 1 Episode 1).
frieren1<- c("#DFE1BC", "#90C6A7", "#3D646A", "#795862",
"#141313", "#E2E1E4", "#A49FB8", "#6A83A9")
(Clipped from Season 1 Episode 2).
frieren2 <- c("#E6E2F1", "#F8E8E3",
"#F6D481", "#F5A556",
"#FB9FB9", "#C94D6C",
"#4F4E46")
If you have watched Frieren, you know which scene I am refering to. If you haven't, I won't spoil it for you. Please go watch it. It's beautiful.
(Clipped from Season 1 Episode 14).
frieren3 <- c("#462D2E", "#BA8F7D", "#AB6B7A",
"#CB6B6E", "#E09DBD", "#47324E", "#FFD1BF")
Ubel is a character from Frieren Beyond Journey's End.
(Clipped from Season 1 Episode 17).
ubel <- c("#C9BFE1", "#958AC3", "#433D64", "#110F09",
"#3A3E25", "#636B3C", "#A4AD72")
I consider Yu-Gi-Oh to be a classic anime. This color palette was inspired by "the Three Egyptian Gods".
YGO <- c("#0E1118", "#DC383A", "#A90C1B", "#FED568", "#C48233", "#84C4EF", "#1D4564")
The bird of paradise plants have colorful flowers.
Photo credit: Domenico Salvagnin from Legnaro, Italy.
bop <- c("#BB4C45", "#9C81A4", "#5D69D5", "#23369D", "#883C7A", "#FF8600", "#FFC4D6", "#E75001")
Love-in-a-mist (Nigella damascena) has beautiful blue flowers.
Photo credit: Chenxin Li, taken at UC Davis.
liam <- c("#354099", "#C0C9F6", "#64296F", "#955996", "#C8D49D", "#5B6555", "#A39E9D")
This color palette is inspired by blue iris plants I found at UC Davis in 2017.
Photo credit: Chenxin Li, taken at UC Davis.
bir <- c("#5952C4", "#918CFE", "#DEDDFF", "#FFFF4C", "#CCA933", "#5A834E", "#77998E")
The easiest way to deploy the color sets is copying the hex. For example:
wisteria <- c("#A6A6A6", "#CDAA7D", "#EEE685", "#FFBBFF", "#D1EEEE", "#6495ED", "#6959CD")
Then use scale_fill_manual(values = wisteria)
or scale_color_mannual(values = wisteria)
.
frieren1<- c("#DFE1BC", "#90C6A7", "#3D646A", "#795862",
"#141313", "#E2E1E4", "#A49FB8", "#6A83A9")
datasets::ChickWeight %>%
filter(Time == 21) %>%
ggplot(aes(x = Diet, y = weight)) +
geom_point(position = position_jitter(seed = 666, width = 0.1),
shape = 21, color = "grey20",
aes(fill = Diet), size = 2.5, alpha = 0.8) +
stat_summary(geom = "point", shape = 4, size = 3, fun.data = "mean_se") +
stat_summary(geom = "linerange", fun.data = "mean_se") +
scale_fill_manual(values = frieren1[c(1, 2, 3, 8)]) +
labs(title = "Effect of 4 diets on chicken growth",
caption = "x = mean; errorbar = SE") +
theme_classic()
Admittedly, some of the colors are two light.
One way to get around that is to use shape = 21
within geom_point()
, which specifies for hollow points.
Then specify color = "grey20"
, which draws a dark grey outline for the points.
Finally, use fill
instead of color
to specify the internal colors of the geoms.
You can use the square bracket syntax []
to subset the color palette as well.
YGO <- c("#0E1118", "#DC383A", "#A90C1B", "#FED568", "#C48233", "#84C4EF", "#1D4564")
datasets::ChickWeight %>%
ggplot(aes(x = Time, y = weight)) +
geom_smooth(aes(color = Diet), se = F)+
scale_color_manual(values = YGO[c(1, 3 , 5, 7)]) +
labs(title = "Effect of 4 diets on chicken growth") +
theme_bw()
You can view the hex code of all color palettes in this collection here.