It really is an amazing pigeon. Apologies that I haven’t a photo credit for it; I found it one day on twitter as it went viral. It is a New York City pigeon.
I want to color something with colors from that pigeon. It has an amazing array of colors.
TLDR: Extract colors from pigeon photo to palette. Then use palette in ggplot.
First, I have to get the color palette.
R has a package called
imgpalr that will extract colors from an image. If I need to, it is
In the following code chunk, I will load the package and then I want to point it to the pigeon image that I downloaded. In my case, it is in the same directory as the R Markdown file and is called
Inside the command
image_pal(), I point it to an image, I specify how many colors , what type of color scheme, I want qualitative, and then some characteristics of the colors. The plot will show me the image alongside the palette though it is upside down.
library(imgpalr) Pigeon.colors <- image_pal("~/Downloads/Pigeon.png", # This will need to be adjusted to the actual file location on your computer. Mine is in my downloads. n = 5, # How many colors? type = "qual", # Type of palette? saturation = c(0.75, 1), brightness = c(0.75, 1), plot = TRUE, # Show the image and the palette? bw = c(0.7, 0.95) )
##  "#A491DE" "#E79FED" "#E0C699" "#E487BB" "#98B2E1"
Now I have a palette in the markdown environment called Pigeon.colors. Now I need some data; I want five categories to match my palette. The rest is junk.
Junk.data <- data.frame(Stuff=c("Hi","Howdy","Hello","Hola","Hallo"), vals = runif(5, 0, 1)) Junk.data
## Stuff vals ## 1 Hi 0.9956436 ## 2 Howdy 0.8112849 ## 3 Hello 0.5295360 ## 4 Hola 0.7348846 ## 5 Hallo 0.2296042
I want to graph it using a barplot equivalent because I have the height of the bars in
vals. Let me use the fill aesthetic to fill the bars in by the five discrete things stored as
Stuff. The trick to using it is to manually specify the colors and point it to the
library(ggplot2) ggplot(Junk.data) + aes(x=Stuff, y=vals, fill=Stuff) + geom_col() + scale_fill_manual(values = Pigeon.colors)