[R] adding to Trellis plots

Deepayan Sarkar deepayan at stat.wisc.edu
Thu Aug 14 06:49:16 CEST 2003

On Wednesday 13 August 2003 07:43, Brunschwig, Hadassa {PDMM~Basel} wrote:
> Hello everyone
> I have data grouped by subjects and i used the trellis plot to show the
> curve for each subject. I have another vector "a" which gives me the
> highest points the curves for each subjects can achieve ( the curve is
> exponential ). Now i want to draw a horizontal line, whose values are saved
> in "a", on each plot for each subject. Is there any possibility to do that?
> Obviously i should use something like panel.abline, the problem is how i
> can inform R that each value in "a" is a horizontal line for each plot.

Some more clarification on your data structure would have helped. Is your 
variable "a" a part of the data frame (with the same value repeated for all 
rows corresponding to each subject), or is it a separate, shorter vector, 
with length equal to the number of subjects ?

If the former, then you should use subscripts, as others have already 
suggested, perhaps as:

xyplot(y ~ x | subject,  data = foo,
       panel = function(x, y, subscripts, ...) {
           panel.xyplot(x, y, ...)
           panel.abline(h=foo$a[subscripts][1], ...)

In the second case, you could do something similar to determine (inside the 
panel function) which element of "a" you need to use (assuming the grouping 
variable "subject" is a factor):

           panel.abline(h = a[as.numeric(foo$subject)[subscripts][1]], ...)

(assuming that the grouping variable "subject" is a factor)

Alternatively, you could probably also get away with

xyplot(y ~ x | subject, data = foo,
       panel = function(x, y, panel.number, ...) {
           panel.xyplot(x, y, ...)
           panel.abline(h=a[panel.number], ...)


More information about the R-help mailing list