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 [hidden email] 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") ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html |
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 <[hidden email]> 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 > [hidden email] > > 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") ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html |
Free forum by Nabble | Edit this page |