[R] Overlaying lattice graphs

Deepayan Sarkar deepayan.sarkar at gmail.com
Tue Jun 12 00:49:14 CEST 2007


On 6/11/07, Seb <pomchip at free.fr> wrote:
> Hello
>
> I apologize in advance if this question has already be posted on the
> list, although I could not find a relevant thread in the archives.
>
> I would like to overlay xyplots using different datasets for each plot.
> I typically work on the following data.frame (mydata) structure
>
> >mydata
>         Drug    Time        Observed          Predicted
> 1       A        0.05         10                 10.2
> 2       A        0.10         20                 19.5
> etc...
> 100     B        0.05         11                 12.7
> 101     B        0.10         35                 36
> etc...
>
> I want to plot the observed data as points and the predicted values as
> lines. If I use the following commands, I don't have the possibility to
> switch the "y" values from Observed for the scatterplot to Predicted for
> the line.
>
> xyplot(Observed ~ Time | Drug, data = mydata, panel  =  function(x,y, ...){
> +            panel.xyplot(x,y,...)
> +            panel.xyplot(x,y,type="l",...)})
>
> I wonder if this problem can be solved using the trellis.focus "family"
> commands but I have a hard time to understand how they work.
>
> Please, let me know if a thread have already addressed this question.
> Otherwise, I would grateful for any hint, comments or info you can provide.

There are several possible solutions. In your case, the simplest one
would be something like (see ?panel.superpose for explanation):

xyplot(Observed + Predicted ~ Time | Drug, data = mydata,
       type = c("p", "l"), distribute.type = TRUE)

This will work best if the Time values are ordered; otherwise you could use

type = c("p", "a")

instead, which will be a little slower. Let us know if this doesn't
give you what you want, preferably with a reproducible example
illustrating why.

-Deepayan



More information about the R-help mailing list