On 2011-01-19 20:15, Max Kuhn wrote:
Hello everyone,

I'm stumped. I'd like to create a scatterplot matrix with circular
reference lines. Here is an example in 2d:

library(ellipse)

set.seed(1)
dat<- matrix(rnorm(300), ncol = 3)
colnames(dat)<- c("X1", "X2", "X3")
dat<- as.data.frame(dat)
grps<- factor(rep(letters[1:4], 25))

panel.circ<- function(x, y, ...)
   {
     circ1<- ellipse(diag(rep(1, 2)), t = 1)
     panel.xyplot(circ1[,1], circ1[,2],
                  type = "l",
                  lty = 2)
     circ2<- ellipse(diag(rep(1, 2)), t = 2)
     panel.xyplot(circ2[,1], circ2[,2],
                  type = "l",
                  lty = 2)
     panel.xyplot(x, y)
   }

xyplot(X2 ~ X1, data = dat,
        panel = panel.circ,
        aspect = 1)

I'd like to to the sample with splom, but with groups.

My latest attempt:

panel.circ2<- function(x, y, groups, ...)
   {
     circ1<- ellipse(diag(rep(1, 2)), t = 1)
     panel.xyplot(circ1[,1], circ1[,2],
                  type = "l",
                  lty = 2)
     circ2<- ellipse(diag(rep(1, 2)), t = 2)
     panel.xyplot(circ2[,1], circ2[,2],
                  type = "l",
                  lty = 2)
     panel.xyplot(x, y, type = "p", groups)
   }



splom(~dat,
       panel = panel.superpose,
       panel.groups = panel.circ2)

produces nothing but warnings:

warnings()
Warning messages:
1: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'

It does not appear to me that panel.circ2 is even being called.

Thanks,

Max

I don't see a function panel.groups() in lattice.
Does this do what you want or am I missing the point:

 splom(~dat|grps, panel = panel.circ2)

Peter Ehlers

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to