clipplot: Clip plotting to a rectangular region In TeachingDemos: Demonstrations for Teaching and Learning

Description

Clip plotting to a rectangular region that is a subset of the plotting area

Usage

 `1` ```clipplot(fun, xlim = par("usr")[1:2], ylim = par("usr")[3:4]) ```

Arguments

 `fun` The function or expression to do the plotting. `xlim` A vector of length 2 representing the x-limits to clip plotting to, defaults to the entire width of the plotting region. `ylim` A vector of length 2 representing the y-limits to clip the plot to, defaults to the entire height of the plotting region.

Details

This function resets the active region for plotting to a rectangle within the plotting area and turns on clipping so that any points, lines, etc. that are outside the rectange are not plotted.

A side effect of this function is a call to the `box()` command, it is called with a fully transparent color so if your graphics device honors transparency then you will probably see no effect.

Value

Nothing meaningful is returned

Note

This function abuses some of the intent of what par(plt=...) is supposed to mean. In R2.7.0 and beyond there is a new funcntion `clip` with the intended purpose of doing this in a more proper manner (however as of my last test it is not working perfectly either, so `clipplot` will remain undepricated for now).

It uses some hacks to make sure that the clipping region is set, but it does this by plotting some tranparent boxes, therefore you should not use this on devices where tranparency is not supported (or you may see extra boxes).

Author(s)

Greg Snow [email protected]

`par`, `lines`, `clip` in R2.7.0 and later
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19``` ```x <- seq(1,100) y <- rnorm(100) plot(x,y, type='b', col='blue') clipplot( lines(x,y, type='b', col='red'), ylim=c(par('usr')[3],0)) attach(iris) tmp <- c('red','green','blue') names(tmp) <- levels(Species) plot(Petal.Width,Petal.Length, col=tmp[Species]) for(s in levels(Species)){ clipplot( abline( lm(Petal.Length~Petal.Width, data=iris, subset=Species==s), col=tmp[s]), xlim=range(Petal.Width[Species==s])) } detach(iris) ```