Deepayan, that is exactly what I was hoping for. Thanks much!
Experimenting with it I noticed that updating two existing objects with plot arguments seems to not work, at least not in this way: gr1 <-xyplot(rnorm(111) ~ runif(111), main = "Plot A") gr2 <- xyplot(runif(111) ~ runif(111), main = "Plot B") plist <- list( update(gr1, plot.args = list(position = c(0, 0, 1, 0.5), more = TRUE)), update(gr2, plot.args = list(position = c(0, 0.5, 1, 1), more = FALSE)) ) print(plist) gives me two separate pages, even though the object is updated: > plist[[1]]$panel.args.common $plot.args $plot.args$position [1] 0.0 0.0 1.0 0.5 $plot.args$more [1] TRUE I can get it to work the "dirty" way: plist[[1]]$plot.args <- list(position = c(0, 0, 1, 0.5), more = TRUE) plist[[2]]$plot.args <- list(position = c(0, 0.5, 1, 1), more = FALSE) Shouldn't update work as well? (R version 2.6.2, platform i386-pc-mingw32) Thanks again! Andreas On Tue Sep 2 21:43 , "Deepayan Sarkar" sent: >On Tue, Sep 2, 2008 at 6:24 AM, Andreas Krause [EMAIL PROTECTED]> wrote: >> >> When I create a lattice/Trellis type graph, I typically write a function >> that returns the graph, as in >> do.graph >> { >> require(lattice) >> return(xyplot(y~x, ...)) >> } >> >> My question today is this: >> If I want two graphs on one page, one way of achieving it is to print the >> objects into defined areas, as in >> >> gr1 >> gr2 >> print(gr1, pos=c(0, 0, 1, 0.5), more=T) >> print(gr2, pos=c(0, 0.5, 1, 1), more=F) >> >> Instead of using the print method, can I create a single trellis object that >> contains those two "sub-graphs"? >> I do not think so, given what I know about the design of these objects. >> I am hoping for a pleasant surprise though. > >Well, you cannot return it as a single "trellis" object. However, you >could always return it as a list with multiple "trellis" objects, and >they will just get printed one by one. You can attach print() >arguments to the objects themselves, so that takes care of the layout. >For example, try > >plist > gr1 > xyplot(rnorm(111) ~ runif(111), main = "Plot A", > plot.args = list(position = c(0, 0, 1, 0.5), more = TRUE)) > gr2 > xyplot(runif(111) ~ runif(111), main = "Plot B", > plot.args = list(position = c(0, 0.5, 1, 1), more = FALSE)) > list(gr1, gr2) >} > >print(plist) > > >Actually you will see some output on the console: > >> print(plist) >[[1]] > >[[2]] > >This is from the print method for lists. If you want to avoid that, >you can always set a class on the list you return and write a >corresponding print() method. > >-Deepayan ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.