Just to answer my own question I just discovered trellis.panelArgs() and that can be used to give the following solution:
library(lattice) library(grid) x <- 1:10 xyplot(x ~ x | gl(2,1), layout = 1:2) trellis.focus("panel", 1, 1) grid.rect(w = 0.5, gp = gpar(fill = "light grey")) # re-plot panel over rectangle do.call("panel.xyplot", trellis.panelArgs()) trellis.unfocus() nevertheless, as a point of general interest I would still be interested to know what a general grid-based solution might be. On 7/30/06, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > Thanks. That's helpful. > > I would be interested in the case where > > 1. one does not have a variable latticeplot, as per your example, > but just has the output of > > xyplot(x ~ x | gl(2,1), layout = 1:2) > > sitting on the screen, having been "printed" by a prior > function. We can assume that no other graphics have been > issued since then. Can one still create a grey rectangle behind > the lower panel? > > 2. In fact, ideally what I would like is to create a function, > put.in.bg, say, that works something like this: > > xyplot(x ~ x | gl(2,1), layout = 1:2) > trellis.focus("panel", 1, 1) > put.in.bg(grid.rect(w = 0.5)) > trellis.unfocus() > > or maybe > > xyplot(x ~ x | gl(2,1), layout = 1:2) > trellis.focus.bg("panel", 1, 1) > grid.rect(w = 0.5) > trellis.unfocus() > > That allows one to add objects to a lattice panel behind the objects > that are already there. This would also be helpful for adding grid > lines afterwards or other lines, rectangles, etc. > > > On 7/30/06, Paul Murrell <[EMAIL PROTECTED]> wrote: > > Hi > > > > > > Gabor Grothendieck wrote: > > > I am trying to create a lattice plot and would like to later, i.e. after > > > the plot is drawn, add a grey rectangle behind a portion of it. > > > The following works except that the rectrangle is on top of and > > > obscures a portion of the chart. I also tried adding col = "transparent" > > > to the gpar list but that did not help -- I am on windows and > > > perhaps the windows device does not support transparency? > > > > > > Correct. > > > > > > > At any rate, how can I place the rectangle behind the plotted > > > points without drawing the rectangle first? > > > > > > library(lattice) > > > library(grid) > > > trellis.unfocus() > > > x <- 1:10 > > > xyplot(x ~ x | gl(2,1), layout = 1:2) > > > trellis.focus("panel", 1, 1) > > > grid.rect(w = .5, gp = gpar(fill = "light grey")) > > > trellis.unfocus() > > > > > > The user-interface is a little rough, but this can be done by accessing > > the underlying grid objects. Here's an example, with explanatory bits > > interspersed ... > > > > # "grab" the lattice plot as a grid gTree > > # There are warnings, but they are ignorable > > latticeplot <- grid.grabExpr(print(xyplot(x ~ x | gl(2,1), > > layout = 1:2))) > > > > # Demonstrate that the gTree faithfully replicates the > > # original lattice plot (not necessary, just to to what's going on) > > grid.newpage() > > grid.draw(latticeplot) > > > > # Explore the gTree (just to to show what's going on) > > # Better user-interface would be nice here ... > > childNames(latticeplot) > > # Identify which children are which > > # (appropriate grob names would be nice here) > > lapply(latticeplot$children, class) > > # Identify where each child is drawn > > latticeplot$childrenvp > > lapply(latticeplot$children, "[[", "vp") > > > > # Add a rect (starts off on top of everything else) > > # NOTE that rect has to have correct vpPath > > plotwithrect <- addGrob(latticeplot, > > rectGrob(w = .5, gp = gpar(fill = "light grey"), > > vp=vpPath("plot1.toplevel.vp", > > "plot1.panel.1.1.vp"))) > > > > # Check this draws what we expect (just to show what's going on) > > grid.newpage() > > grid.draw(plotwithrect) > > > > # Reorder children to put rect at back > > # Appropriate user-interface would be nice here ... > > nc <- length(plotwithrect$childrenOrder) > > plotwithrect$childrenOrder <- > > plotwithrect$childrenOrder[c(nc, 1:(nc - 1))] > > > > # Final result > > grid.newpage() > > grid.draw(plotwithrect) > > > > Paul > > -- > > Dr Paul Murrell > > Department of Statistics > > The University of Auckland > > Private Bag 92019 > > Auckland > > New Zealand > > 64 9 3737599 x85392 > > [EMAIL PROTECTED] > > http://www.stat.auckland.ac.nz/~paul/ > > > > > ______________________________________________ R-help@stat.math.ethz.ch 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.