Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

Re: [R] lattice and several groups

Laurent Rhelp

2006-08-30

Replies:

Gabor Grothendieck a écrit :

> Try this:
>
> xyplot(val ~ x, data = df, type = "p",
>   col = as.numeric(df$f1), pch = as.numeric(df$f2))
>
> key1 <- list(border = TRUE, colums = 2, text = list(levels(df$f1)),
>   points = list(pch = 1:nlevels(df$f1))
> )
>
> key2 <- list(border = TRUE, colums = 2, text = list(levels(df$f2)),
>   points = list(pch = 20, col = 1:nlevels(df$f2))
> )
>
> trellis.focus("panel", 1, 1)
> draw.key(key1, draw = TRUE, vp = viewport(.9, .9))
> draw.key(key2, draw = TRUE, vp = viewport(.75, .9))
> trellis.unfocus()
>
>
> On 8/29/06, Laurent Rhelp <laurentRhelp@(protected):
>
>> Dear R-list,
>>
>>   I would like to use the lattice library to show several groups on
>> the same graph. Here's my example :
>>
>> ## the data
>> f1 <- factor(c("mod1","mod2","mod3"),levels=c("mod1","mod2","mod3"))
>> f1 <- rep(f1,3)
>> f2 <- factor(rep(c("g1","g2","g3"),each=3),levels=c("g1","g2","g3"))
>> df <- data.frame(val=c(4,3,2,5,4,3,6,5,4),
>> x=rep(c(1,2,3),3),f1=f1,f2=f2)
>> #############################################################
>> library(lattice)
>>
>> para.liste <- trellis.par.get()
>> superpose.symbol <- para.liste$superpose.symbol
>> superpose.symbol$pch <- c(1,2,3)
>> trellis.par.set("superpose.symbol",superpose.symbol)
>>
>> # Now I can see the group according to the f1 factor (with a different
>> symbol for every modality)
>> xyplot( val~x,
>>     data=df,
>>     group=f1,
>>     auto.key=list(space="right")
>>     )
>>
>> # or I can see the group according to the f2 factor
>> xyplot( val~x,
>>     data=df,
>>     type="l",
>>     group=f2,
>>     auto.key=list(space="right",points=FALSE,lines=TRUE)
>>     )
>>
>> How can I do to highlight both the f1 and f2 factors on one panel with
>> the legends, using the lattice function ?
>>
>> Thanks
>>
>> ______________________________________________
>> R-help@(protected)
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>
Thank you, Gabor. The way to put the two legends is very interesting.
For the graphs, in fact, my problem is to fit the data for every level
of the f2 factor, showing the levels of the f1 factor in each panel and
that for several surveys . Here's an example closer to my actual data :

## the data

n <- 18
x1 <- seq(1,n)
val1 <- -2*x1+50
val2 <- (-2*(x1-8)^2)+100
val3 <- (-2*(x1-8)^2)+50
y <- c(val1,val2,val3)
x <- rep(x1,3)
f1 <- rep(c("mod1","mod2","mod3"),each=n/3)
f1 <- rep(f1,3)
f2 <- rep(c("g1","g2","g3"),each=n)
df <- data.frame(x=x,y=y,f1=f1,f2=f2)

surveys <-
factor(c(rep("survey1",n*3),rep("survey2",n*3),rep("survey3",n*3)))
df <- rbind(df,df,df)
df <- data.frame(df,surveys=surveys)
#######################################################################
library(lattice)

para.liste <- trellis.par.get()
superpose.symbol <- para.liste$superpose.symbol
superpose.symbol$pch <- c(1,2,3)
trellis.par.set("superpose.symbol",superpose.symbol)

xyplot( y~x | surveys,
    data=df,
    group=f1,
    auto.key=list(space="right")
    )

xyplot( y~x | surveys ,
    data=df,
    type="l",
    group=f2,
    auto.key=list(space="right",points=FALSE,lines=TRUE)
    )

Certainly, I have to use the panel function but I don't know how to mark
the f1 factor in each panel !

______________________________________________
R-help@(protected)
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
©2008 r-help.com - Jax Systems, LLC, U.S.A.