Hi, You might try gridExtra::marrangeGrob()
require(raster) require(sp) require(gridExtra) f <- system.file("external/test.grd", package="raster") r <- raster(f) p1 <- spplot(r) p2 <- spplot(r/2) ps <- list(p1,p2) mm <- marrangeGrob(ps, ncol=1, nrow=2, top = 'foo') mm The above generates the two plots arranged vertically. Note that if I use ps <- c(p1,p2) instead of ps <- list(p1,p2) the marrangeGrob() function throws an error. Unlike list(), c() coerces the components to a common type, which, in this case, I guess isn't 'trellis'. Check out the values of str(c(p1, p2)) vs str(list(p1,p2)). > ps <- c(p1,p2) > mm <- marrangeGrob(ps, ncol=1, nrow=2, top = 'foo') Error in (function (..., grobs = list(...), layout_matrix, vp = NULL, : could not find function "levelplot" Cheers, Ben > On Oct 30, 2016, at 12:26 AM, Duncan Mackay <dulca...@bigpond.com> wrote: > > Hi > > I did not have a look at this when it was sent as I thought it dealt with > ggplot objects > > If you have trellis objects (check by str())or ?class) try printing them > > print(p2, position = (c(0,0,1,0.5), more =T) > print(p1, position = (c(0,0.5,1,1), more = F) > > The only other way that I can think of is using viewports > ? grid::viewports > > If it is base graphics then ? layout may fix it > > Regards > > Duncan > > Duncan Mackay > Department of Agronomy and Soil Science > University of New England > Armidale NSW 2351 > Email: home: mac...@northnet.com.au > > -----Original Message----- > From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Agustin Lobo > Sent: Thursday, 27 October 2016 23:58 > To: r-help@r-project.org > Subject: [R] How to create a list of trellis objects for grid.arrange() > > Given > require(raster) > require(sp) > require(gridExtra) > > f <- system.file("external/test.grd", package="raster") > r <- raster(f) > p1 <- spplot(r) > p2 <- spplot(r) > > I would like to plot the equivalent to > > grid.arrange(p1,p2,ncol=1,nrow=2) > > but keeping the trellis objects p1 and p2 within one single object (as > in practice I have many objects generated within a for() loop). > > The following used to work: > ps <- c(p1,p2) > grid.arrange(ps,ncol=1,nrow=2) > > but does not work any more. > > How should I combine p1 and p2 into one single object that would be > accepted by grid.arrange? > > Thanks > -- > Agustin Lobo > aloboa...@gmail.com > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.