[R] Adding different output to different lattice panels

Alexandre Salvador alxsal at free.fr
Thu Jun 28 23:24:30 CEST 2007


Selon deepayan.sarkar at gmail.com:

> On 6/28/07, alxsal at free.fr <alxsal at free.fr> wrote:
> > I would like to add a reference line to lattice graphs, with the reference
> > line
> > being different according to the factor level.
> >
> > Example : Draw 3 dotplots for "a","b" and "c" factors, and then add an
> > horizontal line at y=10 for panel "a", y=8 for panel "b" and y=6 for panel
> > "4"
> >
> > I tried the code below, but this draw all three reference lines for each
> > panel.
> > How do I index the current panel to chose the right reference vector value
> ?
> >
> >
>
dat<-data.frame(id=rep(c("a","b","c"),4),val=1:12,quand=rep(c("t1","t2","t3","t4"),each=3))
> > ref<-c(10,8,6)
> > plot.new()
> > datplot<-dotplot(val~quand|id,data=dat,panel=function(...){
> > panel.dotplot(...)
> > panel.abline(h=ref)
> > })
> > print(datplot)
>
> dotplot(val~quand|id,data=dat,panel=function(...){
>     panel.dotplot(...)
>     panel.abline(h = ref[packet.number()])
> })
>
> (Things are more complicated if you have more than one conditioning
> variable.)
>
> -Deepayan
>

I tried you solution, but the following error appears when I print(datplot):

   Erreur dans as.numeric(h) : impossible de trouver la fonction "packet.number"

I have lattice and grid libraries loaded. The exact code I use is
datplot<-dotplot(val~quand|id,data=dat,panel=function(...){
panel.dotplot(...)
panel.abline(h=ref[packet.number()])
})
print(datplot)
What do I do wrong ?

Note : I usually need to use the indirect datplot<-dotplot(...  and then
print(datplot) when I store my code in a file and use it through
source("myfile.R"). The direct dotplot(... does not open a device whereas it
does if I type directly dotplot(... at the R command line...
Is this normal ?

--
Alexandre Salvador
Tel: +33(0)6.8214.7733



More information about the R-help mailing list