Coen van Hasselt
2010-Oct-17 14:01 UTC
[R] lattice xyplot - formatting of multiple Y variables when using subgroups
Hi all, Using xyplot I want to print to Y variables (y1, y2) versus X, conditional on the group. How can I obtain a line (type="l") for one relationship (ie. y1 ~ x) and points (type="p") for the other (y2 ~ x) ? library(lattice) # create some sample data df<-data.frame(group=as.factor(c(rep("a",4), rep("b",4))), # grouping variable for conditional plots x=c(1:4,1:4), # x variable y1=rnorm(4,0,1), # y1 y2=rnorm(4,0,1)) # y2 # Basically I want this plot, but then for y1~x points and for y2~x lines. xyplot(y1+y2 ~ x|group, data=df) # This works, but then I get the same plot in the two grouping windows because conditioning is lost in the panel function. xyplot(y1+y2 ~ x|group, data=df, type="l", panel=function(...){panel.xyplot(df$x,df$y1); panel.xyplot(df$x,df$y1, type="l")}) Thanks for your help. Coen [[alternative HTML version deleted]]
Prasenjit Kapat
2010-Oct-17 17:02 UTC
[R] lattice xyplot - formatting of multiple Y variables when using subgroups
On Sun, Oct 17, 2010 at 10:01 AM, Coen van Hasselt <coenvanhasselt at gmail.com> wrote:> Hi all, > > Using xyplot I want to print to Y variables (y1, y2) versus X, conditional > on the group. > How can I obtain a line (type="l") for one relationship (ie. y1 ~ x) and > points (type="p") for the other (y2 ~ x) ? > > library(lattice) > > # create some sample data > df<-data.frame(group=as.factor(c(rep("a",4), rep("b",4))), # grouping > variable for conditional plots > ? ?x=c(1:4,1:4), # x variable > ? ?y1=rnorm(4,0,1), # y1 > ? ?y2=rnorm(4,0,1)) # y2 > > > # Basically I want this plot, but then for y1~x points and for y2~x lines. > xyplot(y1+y2 ~ x|group, data=df) > > # This works, but then I get the same plot in the two grouping windows > because conditioning is lost in the panel function. > xyplot(y1+y2 ~ x|group, data=df, type="l", > ? ?panel=function(...){panel.xyplot(df$x,df$y1); > ? ? ? ? ? ?panel.xyplot(df$x,df$y1, type="l")})Try: xyplot(y1+y2 ~ x|group, data=df, type=c("l","p"), panel=panel.superpose, distribute.type = TRUE)> Thanks for your help. > > Coen-- Prasenjit