[R] impose points on lattice plot

Deepayan Sarkar deepayan.sarkar at gmail.com
Tue Mar 27 19:48:56 CEST 2007


On 3/27/07, Sundar Dorai-Raj <sundar.dorai-raj at pdf.com> wrote:
>
> Luis Ridao Cruz said the following on 3/27/2007 6:15 AM:
> > R-help,
> >
> > I'm using the lattice package to plot 2 variables (vekt ~ aldur)
> > conditioned to a third (kyn * 2 categories).
> >
> > I use the following:
> >
> > xyplot(vekt ~ aldur|kyn, , data = sexSu)
> >
> >
> > I want to superimpose the average(vekt) by 'aldur'
> > conditioned to kyn by using something like:
> >
> > xyplot(vekt~aldur|kyn, subset = aldur <= 12
> > , data = sexSu, panel = function(x, y)
> >        {
> >        panel.xyplot(x, y)
> >        panel.points(x,mean(y),col=2,cex=2 )
> >        })
> >
> >
> > but th output is just a horozontal line ( the average of 'vekt')
> > in both panels I guess)
> >
> > How can be done?
> >
> >
>
>
> An working example would be nice. But here's one possible solution if I
> understand your question correctly:
>
> xyplot(vekt~aldur|kyn, subset = aldur <= 12
> , data = sexSu, panel = function(x, y)
>         {
>         panel.xyplot(x, y)
>         mx <- sort(unique(x))
>         my <- tapply(y, x, mean)
>         o <- order(mx)
>         panel.points(mx[o],my[o],col=2,cex=2 )
>         })

Yes, and since this calculation is already implemented in
'panel.linejoin', you could alternatively try

xyplot(vekt~aldur|kyn, subset = aldur <= 12,
       data = sexSu, panel = function(x, y, ...) {
           panel.xyplot(x, y, ...)
           panel.linejoin(x, y, fun = mean, horizontal=FALSE, col = "black")
       })

or even more conveniently (thanks to the 'type' argument in panel.xyplot),

xyplot(vekt~aldur|kyn, subset = aldur <= 12,
       data = sexSu, type = c("p", "a"))

-Deepayan



More information about the R-help mailing list