clipplot: Clip plotting to a rectangular region

Description Usage Arguments Details Value Note Author(s) See Also Examples

View source: R/clipplot.R

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 538280@gmail.com

See Also

par, lines, clip in R2.7.0 and later

Examples

 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)

TeachingDemos documentation built on April 2, 2020, 3:01 a.m.