[R] How to add 'specific length' segments to lattice plots

Judith Flores juryef at yahoo.com
Sat Aug 9 00:36:23 CEST 2008


Hello,

   I would like to add a horizontal line to each individual panel panel, the length  of the segment is given by a vector. If you run the following lines (a very simplified version of my script and data):




group<-c('A','A','A','A','B','B','B','B','C','C','C','C')
value<-c(89,35,58,33,45,79,66,73,35,37,12,39)
day<-c(0,10,0,10,0,9,0,9,0,5,0,5)
index<-c(2,2,2,2,4,4,4,4,7,7,7,7)
subgroup<-c('g1','g1','g2','g2','g3','g3','g2','g2','g4','g4','g2','g2')

data<-data.frame(group,value,day,index, subgroup)

library('lattice')

xyplot(data$value~data$day|data$group, groups=data$subgroup,

panel=function(x,y,...) {
panel.xyplot(x,y, type='b',...)
}
)

 
  What I would like to add to each panel is a horizontal line that, always starting at 0 for the value of the first argument of the function panel.segments, and the length of the segment will be defined by a value of the vector data$index. For example:

panel.segments(x[x==0],y[y==20],x[data$index],y[y==20])

  This means that 3 of the arguments will be constants, only the third argument is variable. So I tried something  like this:


xyplot(data$value~data$day|data$group, groups=data$subgroup,

panel=function(x,y,k=data$index, subscripts,...) {
panel.xyplot(x,y, type='b',...)
panel.segments(0,20,k[subscripts], 20)
}
)

 
But I obtain and error message letting me know that argument 'subscripts' is missing.

   Could some one explain to me what I am doing wrong? And how can I obtain a horizontal line per panel?

Thank you, as always, for your help and guidance,

Judith



More information about the R-help mailing list