alxsal at free.fr
2007-Jun-28 14:25 UTC
[R] Adding different output to different lattice panels
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)
hadley wickham
2007-Jun-28 15:12 UTC
[R] Adding different output to different lattice panels
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"It's quite easy to do this with ggplot2 (http://had.co.nz/ggplot2) - see http://had.co.nz/ggplot2/geom_vline.html for examples of both common and specific reference lines. Hadley
deepayan.sarkar at gmail.com
2007-Jun-28 15:45 UTC
[R] Adding different output to different lattice panels
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
Alexandre Salvador
2007-Jun-28 21:24 UTC
[R] Adding different output to different lattice panels
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