How often have you had to squint at figures with unpleasant color palettes in a manuscript online or in print, and ultimately given up on distinguishing between fifty (or maybe just around 30) shades of gray?
I found the RColorBrewer package extremely helpful when it comes to picking colors for figures – instead of the standard way of letting R decide your palette (using say ‘rainbow’, or ‘topo.colors’ – see this link).
Here I describe some uses of RColorBrewer to make neat admixture bar-plots in R. You should be able to use the same color palettes for use in other kinds of plots as well (see my previous posts).
Say you have a Q (admixture proportion) matrix obtained from your favorite program (STRUCTURE/ADMIXTURE/FASTRUCT/etc) – named q.txt. Here, I ran multinomial clustering with K = 3 subpopulations, requiring a three color palette from RColorBrewer. The data set that I used was mined from the Tishkoff lab as part of the supplementary material of a paper on microsatellite variation in African populations. Eg: “q.txt” -
0 1 0
0.312204 0.687796 0
0 1 0
0 1 0
0 0.88985 0.11015
0.457319 0.542681 0
0.149153 0.850847 0
0.451845 0.477733 0.070422
0.405077 0.350571 0.244352
0 1 0
0 1 0
0.131876 0.707725 0.1604
To read the data file, install libraries:
barplot(t(as.matrix(q)),col=rainbow(3),xlab="Individual #", ylab="Ancestry",border=NA)
This should produce a bar plot with generic colors, picked using the ‘rainbow’ function.
To use ColorBrewer, I recommend playing around with different accent colors (you should be able to display them all using the display.brewer.pal(n, name) function. Alternately, you should be able to visualize a variety of schemes on the ColorBrewer2 website here.
Thereon, create your own color palette using:
You could also let ColorBrewer decide red-green colorblind friendly palettes, using:
mypal<-display.brewer.all(3, “Accent”, colorblindFriendly=TRUE)
Now you should be able to plot this directly by plugging your customized palette into the barplot function as:
barplot(t(as.matrix(q)),col=mypal,xlab="Individual #", ylab="Ancestry",border=NA)
Here are two examples – one in grayscale, one using a spectral color scheme.
Speaking of colors, here are some spectacular images from Holi celebrations across the world! Happy Spring, everyone!