On Thu, Sep 23, 2010 at 12:33 PM, baptiste auguie
<baptiste.auguie at googlemail.com> wrote:> Dear list,
>
> I'm using lattice::levelplot to plot a coloured image of 3D data. The
> range of the z values goes from negative to positive, but is not
> exactly centred around 0. I would however like to map a diverging
> colour scale with white falling exactly at 0, and both extremes being
> symmetrical in the legend to better contrast the opposite change in
> colour saturation. The following dummy example illustrates my problem,
>
>
> library(lattice)
> d <- transform(expand.grid(x=seq(0, 10, length=100),
> ? ? ? ? ? ? ? ? ? ? ? ? ? y=seq(0, 10, length=100)),
> ? ? ? ? ? ? ? z = sin(x/pi)*cos(0.5*y/pi) - 0.2)
>
> levelplot(z~x*y, data=d,
> ? ? ? ? ?panel=panel.levelplot.raster,
> ? ? ? ? ?cuts = 100, interpolate = TRUE)
>
> The colour scale goes from -0.3 to 0.9 with a middle (white) value of
> 0.3 approximately. ?I'd like it to be from -1 (most saturated blue) to
> 1 (most saturated pink), say, with 0 being white.
>
> I read the entry in ?levelplot and in ?level.colors but could not find
> a solution to this particular case.
Specify the cut-points explicitly:
levelplot(z~x*y, data=d, panel = panel.levelplot.raster, at do.breaks(c(-1, 1),
100))
-Deepayan