[R] Clipping of display in Lattice graphics

Paul Murrell p.murrell at auckland.ac.nz
Fri Aug 20 01:19:06 CEST 2004


Hi


Deepayan Sarkar wrote:
> On Thursday 19 August 2004 06:38, Matthew Walker wrote:
> 
>>I'm baffled as to how the Lattice package achieves clipping.  Would
>>someone mind explaining this to me?
>>
>>Firstly, my attempt using "just" the grid package:
>>
>>x<-seq(0,3,by=0.3)/2.8
>>y<-seq(0,1,by=0.1)
>>
>>grid.newpage()
>>grid.rect(gp=gpar(fill="pink"))
>>
>>vp<-viewport(width=0.8, height=0.8)
> 
> 
> You need to add 'clip="on"' here. Clipping is a property of viewports 
> (not individual 'grob'-s as produced by grid.points and grid.lines),  
> controlled by the 'clip' argument to viewport(). Details (and caveats) 
> in ?viewport.


If your aim is to draw outside the lattice panel, one way is to write a 
panel function that pushes a viewport with clipping turned off.  The 
following gratuitous example also shows how you can recreate the x- and 
y-axis ranges in the new viewport.

library(grid)
data(quakes)
Depth <- equal.count(quakes$depth, number=8, overlap=.1)
# extra lines clipped to panel
xyplot(lat ~ long | Depth, data = quakes,
        panel=function(x, y, ...) {
          panel.xyplot(x, y, ...)
          grid.lines(c(155, 200), c(-40, -10),
                     gp=gpar(lwd=3),
                     default.units="native")
          })
# extra lines extend beyond panel
xyplot(lat ~ long | Depth, data = quakes,
        panel=function(x, y, ...) {
          panel.xyplot(x, y, ...)
          xscale <- convertX(unit(0:1, "npc"), "native", valueOnly=TRUE)
          yscale <- convertY(unit(0:1, "npc"), "native", valueOnly=TRUE)
          pushViewport(viewport(clip="off",
                                xscale=xscale, yscale=yscale))
          grid.lines(c(155, 200), c(-40, -10),
                     gp=gpar(lwd=3),
                     default.units="native")
          popViewport()
          })

Paul
-- 
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/




More information about the R-help mailing list