Re: [R] contour lines for levelplot

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Tue 14 Feb 2006 - 08:23:49 EST

I'm not sure what gave you the idea that there's a limit of 99 contour lines, but no such limit is intended. You need to read the documentation of panel.contourplot and use it in a panel function. Hint:

library(lattice)

levelplot(volcano,

          panel = function(..., at, contour = FALSE, labels = NULL) {
              panel.levelplot(..., at = at, contour = contour, labels = labels)
              panel.contourplot(..., at = c(137, 141), contour = TRUE,
labels = FALSE)
          })

contour (and plot.new) are base graphics functions, they do not (easily) mix with lattice functions (which are based on the grid package).

Deepayan

On 2/12/06, Jan Marius Hofert <m_hofert@web.de> wrote:
> Hi,
>
> I would like to add contour lines to a (trellis/lattice-) levelplot.
> Sure, there is the "contour=TRUE" argument, but this uses
> "cuts=..." (which is usually chosen very high for my plots. I guess
> cuts=99 is the best you can do (?)) for plotting the contour lines.
> Furthermore, I do not like the numbering of the contour lines this
> way. Therefore, I tried to add a standard contour plot. There are 2
> problems to do this. First, as I would like to have the levelplot
> with a colorkey, the contour lines are plotted over the colorkey (see
> example code below). I could not fix this problem by changing the
> aspect argument of the levelplot call or by working with xlim and
> ylim in the contour plot function. Second, I am not sure if the
> contour lines added this way actually represent the points they
> should (e.g. does the contour line labeled with 0.5 really hit the
> points of this height?). So, is there a simple way of how to add the
> contour lines (of the contour function) to the levelplot this way? If
> not, is it possible to plot the levelplot with cuts=99 but only draw
> the contour lines (with the option "contour=TRUE" in the levelplot
> call) at specified points? Is it possible to tell the levelplot
> function (with cuts=99) to plot a specified number of contour lines
> (say, only to plot 10 contour lines in the whole existing range of z-
> values)?
>
> Thank you very much in advance
>
> Marius
> m_hofert@web.de
>
> example code:
>
> remove(list=objects())
> x.1<-rep(seq(0,1,by=0.04),each=26)
> x.2 <- 0.04*(0:25)
> y.1<-rep(x.2,26)
> y.2 <- 0.04*(0:25)
> z.1 <-x.1*y.1
> z.2<- matrix(unlist(z.1),ncol=26,byrow=TRUE)
> library(lattice) #for trellis-like graphical plots
> plot.new()
> levelplot(z.1~x.1*y.1,xlim=c(0,1),ylim=c(0,1),aspect=1,scales=list
> (relation="free",tick.number=6),cuts=99,colorkey=list(tick.number=6))
> contour(x.2,y.2,z.2,levels=seq(0,1,by=0.1),add=TRUE,col="black")



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Feb 14 08:31:32 2006

This archive was generated by hypermail 2.1.8 : Wed 15 Feb 2006 - 13:31:03 EST