[R] Selecting divergent colors

Ben Tupper btupper at bigelow.org
Mon Jun 10 22:07:40 CEST 2013


Hi,

On Jun 10, 2013, at 3:46 PM, Adams, Jean wrote:

> It will be hard to come up with 20 clearly distinguishable colors.  Check
> out the website http://colorbrewer2.org/ and the R package RColorBrewer.
> It does not have a 20-color palette, but it does have some 8- to 12-color
> palettes that are very nice.
> 
> library(RColorBrewer)
> display.brewer.all(n=NULL, type="all", select=NULL, exact.n=TRUE)
> 

It sounds like Brian is looking for categorical coloring rather than divergent coloring.  The Glasbey LUT works really well in image processing for just such purposes.  It would be easy to use that within R for your lines.

http://www.bioss.ac.uk/people/chris/colorpaper.pdf

You might be able to snag the color table out of this collection of Java plugins for ImageJ software. 

http://www.dentistry.bham.ac.uk/landinig/software/morphology.zip

Within that archive is a text file called glasbey.lut which is a simple text file of RGB color values.

Cheers,
Ben




> You could use these colors in combination with line type to build up to 72
> unique combinations.  For example ...
> 
> nuniq <- ncol(mat)
> mycols <- rep(brewer.pal(12, "Set3"), length=nuniq)
> myltys <- rep(1:6, rep(12, 6))[1:nuniq]
> 
> for(k in 1:nuniq){
> plot(density(mat[,k]), col=mycols[k], xlab='', ylab='', axes=F, main=F,
> lwd=3, lty=myltys[k])
> par(new=TRUE)
> }
> legend('topright', legend=snames, col=mycols, lty=myltys, lwd=3)
> 
> Jean
> 
> 
> 
> On Mon, Jun 10, 2013 at 12:33 PM, Brian Smith <bsmith030465 at gmail.com>wrote:
> 
>> Hi,
>> 
>> I was trying to make a density plot with 13 samples. To distinguish each
>> sample, it would be good if each color is as different as possible from the
>> other colors. I could use the built in function, but that does not do more
>> than 8 colors and then goes back to recycling the cols. If I use a palette,
>> then it is really difficult to distinguish between the colors.
>> 
>> So, is there a way that I can select a large number of colors (i.e. perhaps
>> 20) that are as different from each other as possible?
>> 
>> Here is my example code using the palette:
>> 
>> **********************
>> mat <- matrix(sample(1:1000,1000,replace=T),nrow=20,ncol=20)
>> snames <- paste('Sample_',1:ncol(mat),sep='')
>> colnames(mat) <- snames
>> 
>> mycols <- palette(rainbow(ncol(mat)))
>> 
>> for(k in 1:ncol(mat)){
>>  plot(density(mat[,k]),col=mycols[k],xlab='',ylab='',axes=F,main=F)
>>  par(new=T)
>> }
>> 
>> legend(x='topright',legend=snames,fill=mycols)
>> 
>> ****************************
>> 
>> thanks!
>> 
>>        [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

Ben Tupper
Bigelow Laboratory for Ocean Sciences
60 Bigelow Drive, P.O. Box 380
East Boothbay, Maine 04544
http://www.bigelow.org



More information about the R-help mailing list