Message-ID: <E527B8A3-84BB-4833-AC87-29B0213CE9F2@u.washington.edu>
Date: 2013-11-26T00:27:18Z
From: Don McKenzie
Subject: specify breaks in divergent palette in RColorBrewer: was divergent colors around zero in levelplot()
In-Reply-To: <CACk-te0VQLrwNow4PrGwr8CCgpAhaxe2h3BGVcfpaogcmdrYqQ@mail.gmail.com>
Bert or anyone else familiar with RColorBrewer:
Has anyone tried to accomplish with RColorBrewer what I asked about in my original post (below)?
Here is an example cribbed from the levelplot() help examples
x <- seq(pi/4, 5 * pi, length.out = 100)
y <- seq(pi/4, 5 * pi, length.out = 100)
r <- as.vector(sqrt(outer(x^2, y^2, "+")))
grid <- expand.grid(x=x, y=y)
grid$z <- cos(r^2) * exp(-r/(pi^3))
# now use RColorBrewer to get a palette
library("RColorBrewer?)
levelplot(z~x*y, grid,col.regions=brewer.pal(6,"BrBG?)) # the numeric argument to brewer.pal is the number of colors used ? I tried several
This gives me a nice brown-to-green gradient but does not (AFAICS) give me control over where the center of the divergence lies. Even in this symmetrical
example, I can?t get it to be at zero ? it repeats on either side of zero.
thanks to anyone who pages through all this and makes a suggestion, even if it doesn?t work. :-)
On Nov 22, 2013, at 10:25 PM, Bert Gunter <gunter.berton at gene.com> wrote:
> Use the Rcolorbrewer package.
>
> -- Bert
>
> On Fri, Nov 22, 2013 at 8:43 PM, Don McKenzie <dmck at u.washington.edu> wrote:
>> I would like to produce a levelplot with divergent colors such that increasingly negative values of Z get darker in the first color and increasingly
>> positive values get darker in the second color. this is common in cartography. I have tried tinkering with the col.regions argument but the best I can do
>> is to get the split in the middle of my range of Z, but in my particular case range(Z) is (-1,12).
>>
>> I am using R 3.0.2 on OSX 10.9
>>
>> Here is an example
>>
>> x <- y <- c(1:25)
>> grid <- expand.grid(x=x,y=y)
>> grid$z <- sort(runif(625,min=-1,max=12))
>> levelplot(z ~ x*y,grid) # produces the default pink and blue but the split is at ~5.5
>>
>> # do something clever here
>> # e.g., my.colors <- <create a palette that splits at zero>
>>
>> levelplot(z ~ x*y,grid,col.regions=my.colors) # so there should be some light pink at the bottom and the rest increasingly intense blue
>>
>> Ideas appreciated. Thanks in advance.
>>
>>
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
>
> (650) 467-7374
Don McKenzie
Research Ecologist
Pacific Wildland Fire Science Lab
US Forest Service
Affiliate Professor
School of Environmental and Forest Sciences
University of Washington
dmck at uw.edu