[R] How to color a region in a contour plot with the contour being the boundary?
Marius Hofert
marius.hofert at math.ethz.ch
Wed Jan 4 00:45:23 CET 2012
I was hoping for a solution without lattice.
But it solves the problem, thanks Jean.
Cheers,
Marius
On 2012-01-03, at 19:06 , Jean V Adams wrote:
>
> Try the levelplot() function in package lattice.
>
> library(lattice)
>
> dat <- expand.grid(x=x, y=y)
> dat$z <- pmax(f(dat$x) + f(dat$y) - 10, 0)
>
> levelplot(z ~ x * y, dat,
> at=c(-1, 0.02, 1, 5, 10, 20, 50, 500, 9000000),
> labels=TRUE, contour=TRUE, colorkey=FALSE,
> col.regions=gray(c(0.2, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1)))
>
> Jean
>
>
> Marius Hofert wrote on 12/31/2011 05:02:22 AM:
>
> > Dear expeRts,
> >
> > I would like to color a certain region in a levelplot. The region
> > for z <= 0.02 should have a dark gray color. Below is a minimal
> > example. It almost does what I want, but The region between z=0.02
> > and z=1 is also colored in dark gray (instead of just the region for
> > z <= 0.02).
> > How can I solve this?
> >
> > Cheers,
> >
> > Marius
> >
> >
> > ## z values for given x and y
> > f <- function(x) 4*((1-x)^(-1/2)-1)
> > eps <- 1e-12
> > x <- y <- seq(eps, 1-eps, length.out=500)
> > z <- outer(x, y, FUN=function(x, y) pmax(f(x) + f(y) - 10, 0))
> >
> > ## determine colors
> > zcols <- c(gray(0.2), gray(seq(0.5, 1, length.out=50)), rep
> > ("#FFFFFF", max(z)-51)) # colors with dark gray in the beginning for
> > z <= 0.02 and many whites for z > 50
> >
> > ## trial 1
> > pdf(file="levelplot1.pdf", width=6, height=6)
> > image(x, y, z, xaxs="r", yaxs="r", col=zcols)
> > contour(x, y, z, levels=c(0.02, 1, 5, 10, 20, 50, 500), add=TRUE)
> > dev.off()
> >
> > ## trial 2
> > pdf(file="levelplot2.pdf", width=6, height=6)
> > image(x, y, z, xaxs="r", yaxs="r", col=zcols, oldstyle=TRUE)
> > contour(x, y, z, levels=c(0.02, 1, 5, 10, 20, 50, 500), add=TRUE)
> > dev.off()
More information about the R-help
mailing list