[R] Equal number of cuts in a contourplot with trellis

Deepayan Sarkar deepayan.sarkar at gmail.com
Thu Jan 12 17:47:26 CET 2006


On 1/12/06, Jesus Frias <Jesus.Frias at dit.ie> wrote:
> Dear R-helpers,
>
> 	I need some help to produce a set of contour plots that I am
> trying to make in order to compare surfaces between the levels of a
> factor. For example:
>
> library(lattice)
> g <- expand.grid(x = 60:100, y = 1:25, ti = c("a","b","c"))
> g$z <-with(g,
>   (-1e-4*x-1e-3*y-1e-5*x*y)*(ti=="a") +
>   (1e-2*x-1e-3*y-1e-4*x*y)*(ti=="b") +
>   (1e-3*x-1e-3*y-1.e-5*x*y)*(ti=="c")
>                )
>
> contourplot(z~ x * y|ti, data = g,
>             cuts=20,
>             pretty=T,
>             screen = list(z = 30, x = -60))
>
> As you can see in the figure, most of the contour lines are in one of
> the levels and we are not able to see how the other levels look like.
>
> I would like to display the same number of cuts in each of the trellis.
> I can make each of the contourplots separately and control the number of
> cuts but I am not able to plot all of them in one.

The simplest solution is to recompute the levels for each panel function:

contourplot(z~ x * y|ti, data = g,
            label.style = "align",
            panel = function(x, y, z, subscripts, at, ...) {
                at <- pretty(z[subscripts], 10)
                panel.contourplot(x, y, z,
                                  subscripts = subscripts,
                                  at = at,
                                  ...)
            })

Alternatively, you could pass in a suitable 'at' vector computed externally.

Deepayan
--
http://www.stat.wisc.edu/~deepayan/




More information about the R-help mailing list