[R] Creating smooth color regions with panel.contourplot()

Waichler, Scott R Scott.Waichler at pnl.gov
Thu Sep 18 22:36:05 CEST 2008


> > Thank you very much, Deepayan.  There is just one more feature I'd 
> > like to get, the ability to add the contour lines.  My revision to 
> > your code below prints too many lines.  What needs to be changed?

> You need to name arguments here. as.double(at) is being 
> matched to 'nlevels', but you want 'levels'.
> 
> Another option is to use panel.levelplot() for the contours. 
> E.g., (also with more accurate 'x' and 'y'):
> 
> panel.filledcontour <-
>    function(x, y, z, subscripts,
>             at,
>             col.regions = cm.colors,
>             col = col.regions(length(at) - 1),
>             ...)
> {
>    stopifnot(require("gridBase"))
>    z <- matrix(z[subscripts],
>                nrow = length(unique(x[subscripts])),
>                ncol = length(unique(y[subscripts])))
>    if (!is.double(z)) storage.mode(z) <- "double"
>    opar <- par(no.readonly = TRUE)
>    on.exit(par(opar))
>    if (panel.number() > 1)
>        par(new = TRUE)
>    par(fig = gridFIG(), omi = c(0, 0, 0, 0), mai = c(0, 0, 0, 0))
>    cpl <- current.panel.limits()
>    plot.window(xlim = cpl$xlim, ylim = cpl$ylim,
>                log = "", xaxs = "i", yaxs = "i")
>    .Internal(filledcontour(as.double(sort(unique(x[subscripts]))),
>                            as.double(sort(unique(y[subscripts]))),
>                            z, as.double(at), col = col))
>    panel.contourplot(x, y, z, subscripts = subscripts, at = at,
>                    region = FALSE, contour = TRUE, labels = FALSE) }

The contour lines do not exactly line up with some of the color breaks.
I see this in the volcano example as well as the figure I'm trying to
make.  

--Scott Waichler



More information about the R-help mailing list