Hi Peter, Thank you for your thoughtful reply. I am tweaking the setting print settings you suggested. It looks like this is going to solve my problem. Thanks very much for help.
Jonathan On Sat, Sep 25, 2010 at 6:00 PM, Peter Ehlers <ehl...@ucalgary.ca> wrote: > On 2010-09-25 8:59, Jonathan Flowers wrote: > >> Hi all, >> >> I am difficulty with simple layout of plots in the lattice package >> >> I have created a series of levelplots and would like to plot them to a >> single device, but need to reduce the margin areas. This is easily >> accomplished with par(oma) and par(mar) in the base graphics package but I >> am having problems finding the equivalent features in the lattice package. >> Ideally, I would like to reduce the amount of white space among plots in >> the >> following example. Thanks in advance. >> >> library(lattice) >> p1<- levelplot( matrix(c(1:25),nr=5,nc=5),row. >> values=1:5,column.values=1:5) >> p2<- levelplot(matrix >> (rnorm(25),nr=5,nc=5),row.values=1:5,column.values=1:5) >> p3<- levelplot( >> matrix(c(1:25),nr=5,nc=5),row.values=1:5,column.values=1:5) >> p4<- levelplot(matrix >> (rnorm(25),nr=5,nc=5),row.values=1:5,column.values=1:5) >> >> print(p1,split=c(1,1,2,2),more=T) >> print(p2,split=c(2,1,2,2),more=T) >> print(p3,split=c(1,2,2,2),more=T) >> print(p4,split=c(2,2,2,2)) >> >> Thanks in advance, >> >> Jonathan >> > > Here are a couple of things you can play with. > > First, the default for the matrix method of levelplot() is to > produce square plots using the argument aspect="iso". So > unless you set aspect=<some other value or "fill">, you can > only reduce the outer white space at the expense of > increasing the inner white space. To reduce the outer white > space but keep the aspect="iso", you can set the size of > the graphics device and then fiddle with the top.padding > and/or bottom.padding components of the layout.heights > parameter. Something like this: > > ## some simple data > m <- matrix(1:25, nr=5) > > ## create 4 (identical for illustration only) plots > p1 <- p2 <- p3 <- p4 <- levelplot(m, aspect="iso", > par.settings=list(layout.heights=list(top.padding=-2))) > > ## open a trellis device (I'm on Windows) > trellis.device(windows, height=6, width=7) > > ## print the plots > print(p1, split=c(1,1,2,2), more=TRUE) > print(p2, split=c(2,1,2,2), more=TRUE) > print(p3, split=c(1,2,2,2), more=TRUE) > > print(p4, split=c(2,2,2,2)) > > > ## alternatively, use aspect="fill" and adjust size in the > ## print() calls > p1 <- p2 <- p3 <- p4 <- levelplot(m, aspect="fill") > > trellis.device(windows, height=6, width=7) > > print(p1, split=c(1,1,2,2), > panel.height=list(x=2, units="in"), more=TRUE) > > print(p2, split=c(2,1,2,2), > panel.height=list(x=2, units="in"), more=TRUE) > > print(p3, split=c(1,2,2,2), > panel.height=list(x=2, units="in"), more=TRUE) > print(p4, split=c(2,2,2,2), > panel.height=list(x=2, units="in")) > > > Probably the best way, if your levels are roughly the same > for all plots, is to convert your data to a data frame, > define a 4-level factor, and create a standard 4-panel plot > instead of using the 'split' argument. > > -Peter Ehlers > [[alternative HTML version deleted]] ______________________________________________ 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.