Ahh, now I see what you mean... Thanks, that indeed works. Cheers,
Marius Marius Hofert <marius.hof...@math.ethz.ch> writes: > Bert Gunter <gunter.ber...@gene.com> writes: > >> Inline below. >> >> On Sun, Sep 23, 2012 at 1:41 AM, Marius Hofert >> <marius.hof...@math.ethz.ch> wrote: >>> Dear grid expeRts, >>> >>> I would like to create a layout with grid that looks like the following, >>> but with cells (1,1), (1,4), (4,1), and (4,4) removed and cells (2,1) and >>> (3,1) (and (4,2) and (4,3)) combined to one cell (so that contents can >>> easily be centered. >>> >>> How can this be achieved? >>> >>> require(grid) >>> gl <- grid.layout(4, 4, widths=unit(c(1, 3, 3, 1), "cm"), >>> heights=unit(c(1, 3, 3, 1), "cm")) >>> grid.show.layout(gl) >>> >>> My goal is to put 4 plots in the larger squares, create some labels in the >>> boxes >>> (1,2), (1,3), (2,4), (3,4), and put common x-axis and y-axis labels in the >>> (combined) boxes (2,1), (3,1) and (4,2), (4,3). >> >> Why don't the "layout.pos.row" and "layout.pos.col" arguments of >> ?viewport not do exactly what you appear to want? Perhaps I >> misunderstand, but I think what you want to do is just create your >> layout as above and then push the viewports you want by suitably >> setting these arguments, and then just draw your plots. > > ... but I will always have two sub-boxes instead of one single box below the > x-axis and to the left of the y-axis. In a single box for the axis labels, one > can easily center a label. But with two boxes, how do you determine the center > of both? > >> >> >> If you're serious about using grid, Murrell's Graphics book is >> essential and probably will clarify these issues for you (better than >> I can, anyway). > > I know that, thanks for pointing it out. Unfortunately, there is no problem of > the above type mentioned (afaik), that's why I asked. > >> >> >>> >>> With layout() one can simply cbind/rbind boxes to produce the desired >>> result. With grid.layout() this seems not be the case. Maybe the workflow is >>> differently here to get the desired result. >> >> You appear to be mistaken. > > I might have described it unsufficiently, but you can do the above with > layout() > [I used that trick in many plots before]. The above-mentioned two boxes would > get the same number, so would be treated as one plot region. I was hoping for > something similar with grid.layout. > > It is clear that you can always build your layout with "too many boxes" as a > rectangular region and only address those viewports where plotting should take > place. But I don't see how one could specify to plot in the center of two > adjacent boxes of the same sizes so that the content looks "centered" with > respect to both boxes (viewed as a single box). > >> From ?grid.layout: >> >> "This function must NOT be confused with the base R graphics function >> layout. In particular, do not use layout in combination with Grid >> graphics. The documentation for layout may provide some useful >> information and this function should behave identically in comparable >> situations. The grid.layout function has added the ability to specify >> a broader range of units for row heights and column widths, and allows >> for nested layouts (see viewport). " >> >> Cheers, >> Bert >> >>> >>> Cheers, >>> >>> Marius >>> >>> ______________________________________________ >>> 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. > -- ETH Zurich Dr. Marius Hofert RiskLab, Department of Mathematics HG E 65.2 Rämistrasse 101 8092 Zurich Switzerland Phone +41 44 632 2423 http://www.math.ethz.ch/~hofertj ______________________________________________ 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.