[R] par("uin") ?

Peter Ehlers ehlers at ucalgary.ca
Tue Jul 20 00:44:10 CEST 2010


Michael,
I have a very old version of some brace functions somewhere.
I never did combine them into a single function, so there's
one each for left/right/up/down braces. (I used them in
teaching regression to show resids and formulae.)

If you're interested, I'll dig 'em up and send them.

Otherwise, I think you can make your inherited code work
with something like

Usr <- par('usr')
Pin <- par('pin')
dux <- Usr[2] - Usr[1]
duy <- Usr[4] - Usr[3]
uin <- c(dux,duy)/Pin

to replace

  uin <- par("uin")

But you'll also have to fiddle with atan()

   -Peter Ehlers

On 2010-07-19 9:20, Michael Friendly wrote:
> I inherited a function written either for an older version of R or SPlus
> to draw a brace, "{", in a graph. It uses par("uin") to determine the
> scaling of the
> quarter circles that make up segments of the brace, but that setting
> doesn't
> exist in current R.
> I'm guessing that, in the function below, ux, uy can be defined from
> par("usr") and par("pin"), but maybe someone remembers what par("uin")
> was supposed to refer to.
>
> brace <- function (x1 = 0, y1 = 0, x2 = 0, y2 = 1, right = TRUE, rad = 0.2)
> {
> uin <- par("uin")
> ux <- uin[1]
> uy <- uin[2]
> dx <- x2 - x1
> dy <- y2 - y1
> alpha <- atan(ux * dx, uy * dy)
> scale <- sqrt((ux * dx)^2 + (uy * dy)^2)
> if (scale > 5 * rad)
> rad <- rad/scale
> qcirc <- cbind(cos((0:10) * pi/20), sin((0:10) * pi/20))
> qcircr <- cbind(cos((10:0) * pi/20), sin((10:0) * pi/20))
> rot <- function(theta) t(cbind(c(cos(theta), sin(theta)),
> c(-sin(theta), cos(theta))))
> seg1 <- t(t(rad * qcirc %*% rot(-pi/2)) + c(0, rad))
> seg4 <- t(t(rad * qcirc) + c(0, 1 - rad))
> seg3 <- t(t((rad * qcircr) %*% rot(pi)) + c(2 * rad, 0.5 +
> rad))
> seg2 <- t(t((rad * qcircr) %*% rot(pi/2)) + c(2 * rad, 0.5 -
> rad))
> bra <- rbind(seg1, seg2, seg3, seg4)
> if (!right)
> bra <- bra %*% diag(c(-1, 1))
> bra <- scale * bra %*% rot(-alpha)
> bra <- bra %*% diag(c(1/ux, 1/uy))
> bra <- t(t(bra) + c(x1, y1))
> bra
> }
>



More information about the R-help mailing list