[R] Adding different output to different lattice panels

Alexandre Salvador alxsal at free.fr
Thu Jun 28 23:57:32 CEST 2007


Selon Deepayan Sarkar <deepayan.sarkar at gmail.com>:

> On 6/28/07, Alexandre Salvador <alxsal at free.fr> wrote:
> > 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 ?
>
> You are using a very old version of R (or at least old enough that the
> packet.number number didn't exist). You haven't told us what version
> you are using.
>
> I would encourage you to upgrade, but this might work for now:
>
> dotplot(val~quand|id,data=dat,
>         panel=function(..., panel.number){
>             panel.dotplot(...)
>             panel.abline(h = ref[panel.number])
> })
>
> > 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 ?
>
> Yes, and a FAQ:
>
>
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f
>
> -Deepayan
>
Works all right,
I use Version 2.3.1 (2006-06-01)
I'll upgrade to the newer versions...
Thanks very much,
Cheers

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



More information about the R-help mailing list