[R] circular reference lines in splom

Peter Ehlers ehlers at ucalgary.ca
Thu Jan 20 17:13:01 CET 2011


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



More information about the R-help mailing list