[R] panel.arrows problem in custom panel function

Gavin Simpson gavin.simpson at ucl.ac.uk
Tue Aug 12 16:24:23 CEST 2008


On Thu, 2008-08-07 at 14:11 -0700, Deepayan Sarkar wrote:
> On Thu, Aug 7, 2008 at 7:55 AM, Gavin Simpson <gavin.simpson at ucl.ac.uk> wrote:
> > Dear List,
<snip />
> 
> You need to use the proper subset of rows of X:

[Apologies for the delay in responding --- I have been offline for
several days]

Thank you very much Deepayan. I thought that was the problem, but was
not aware of the correct incantation to select the relevant subsets.

All the best,

G

> 
> `panel.procrustes` <-
>     function(x, y, kind, choices, rotation, X,
>              ar.col, length = 0.05, ..., subscripts)
> {
>     tp <- trellis.par.get()
>     if(missing(ar.col))
>         ar.col <- tp$superpose.symbol$col[1]
>     if(kind == 1) {
>         panel.abline(h = 0, lty = "dashed")
>         panel.abline(v = 0, lty = "dashed")
>         if(ncol(rotation) == 2) {
>             ## Sometimes rotation[1,1] is 2.2e-16 above one
>             rotation[1,1] <- min(rotation[1,1], 1)
>             panel.abline(0, tan(acos(rotation[1, 1])), lty = "solid")
>             panel.abline(0, 1/tan(acos(-rotation[1, 1])), lty = "solid")
>         } else {
>             Y <- cbind(x,y) %*% t(rotation)
>             for (k in seq_len(ncol(Y))) {
>                 tmp <- matrix(0, nrow = 2, ncol = ncol(Y))
>                 tmp[, k] <- range(Y[, k])
>                 tmp <- tmp %*% rotation
>                 panel.lines(tmp[, choices], lty = 1)
>                 panel.text(tmp[2, choices[1]], tmp[2, choices[2]],
>                            as.character(k))
>             }
>         }
>         panel.xyplot(x, y, type = "p", ...)
>         panel.arrows(x0 = x, y0 = y,
>                      x1 = X[subscripts ,1], y1 = X[subscripts, 2],
>                      length = length, col = ar.col, ends = "last", ...)
>     } else if(kind == 2) {
>         quant <- quantile(y)
>         panel.xyplot(x, y, type = "h", ...)
>         panel.abline(h = quant[2:4], lty = c(2,1,2))
>     }
> }
> 
> `prepanel.procrustes` <- function(x, y, X, choices, kind, ..., subscripts) {
>     if(kind == 1) {
>         xlim <- range(x, X[subscripts, choices[1]])
>         ylim <- range(y, X[subscripts, choices[2]])
>     } else {
>         xlim <- range(x)
>         ylim <- range(y)
>     }
>     list(ylim = ylim, xlim = xlim)
> }
> 
> -Deepayan
-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list