Hi
Gabor Grothendieck 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? xyplot(x ~ x | gl(2,1), layout = 1:2) latticeplot <- grid.grab() # Continue as for grid.grabExpr() example ... > 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. I could imagine something like ... xyplot(x ~ x | gl(2,1), layout = 1:2) put.in.bg("panel", 1, 1, rectGrob(w = 0.5)) ... where you just wrap the approach I described (using grid.grab() to capture the existing plot, then modifying the resulting grob), but such a function would obviously not work well when called after something other than just a trellis plot. Paul > 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/ >> >> -- 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.