Hi, I have a dataframe containing data from individuals 1, ..., 12 (grouping variable "g" in the data frame below), which belong either to "A" or "B" (grouping variable "f"): set.seed(1) tmp <- data.frame( y=c(rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2)), x=1:10, f=c(rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10)), g=c(rep("3",10),rep("2",10),rep("1",10),rep("4",10),rep("5",10),rep("6",10),rep("8",10),rep("7",10),rep("9",10),rep("11",10),rep("12",10),rep("10",10))) I would like to draw line plots using the function xyplot: library(lattice) xyplot(y ~ x | g , groups=g, data=tmp,type="l", par.settings=list(superpose.line=list(col=c("red","blue"))), auto.key=list(space="top", text=levels(tmp$f),points=FALSE,lines=TRUE)) As it is, the colors are recycled alternately in the order the individuals appear in the plot (1, 10, 11, 12, 2, ..., 9). How can I assign the red color to all individuals of group "A" and the blue color to all individuals of group "B"? Thanks in advance! Christof
Hi Christof, You can do this in ggplot, with one exception: install.packages("ggplot2") library(ggplot2) qplot(x, y, data=tmp, facets = . ~ g, geom="line", colour=f) Unfortunately I don't yet have an implementation of facetting that works like lattice, wrapping the line of plots in to 2d dimensions. You can find out more about ggplot2 at http://had.co.nz/ggplot2 Hadley On 8/30/07, Christof Bigler <christof.bigler at env.ethz.ch> wrote:> Hi, > > I have a dataframe containing data from individuals 1, ..., 12 (grouping > variable "g" in the data frame below), which belong either to "A" or "B" > (grouping variable "f"): > > set.seed(1) > > tmp <- data.frame( > > y=c(rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2)), > x=1:10, > > f=c(rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10)), > > g=c(rep("3",10),rep("2",10),rep("1",10),rep("4",10),rep("5",10),rep("6",10),rep("8",10),rep("7",10),rep("9",10),rep("11",10),rep("12",10),rep("10",10))) > > > I would like to draw line plots using the function xyplot: > > library(lattice) > > xyplot(y ~ x | g , groups=g, data=tmp,type="l", > par.settings=list(superpose.line=list(col=c("red","blue"))), > auto.key=list(space="top", > text=levels(tmp$f),points=FALSE,lines=TRUE)) > > As it is, the colors are recycled alternately in the order the > individuals appear in the plot (1, 10, 11, 12, 2, ..., 9). > > How can I assign the red color to all individuals of group "A" and the > blue color to all individuals of group "B"? > > Thanks in advance! > > Christof > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > 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. >-- http://had.co.nz/
On 8/30/07, Christof Bigler <christof.bigler at env.ethz.ch> wrote:> Hi, > > I have a dataframe containing data from individuals 1, ..., 12 (grouping > variable "g" in the data frame below), which belong either to "A" or "B" > (grouping variable "f"): > > set.seed(1) > > tmp <- data.frame( > > y=c(rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2),rnorm(10,0,1),rnorm(10,4,2)), > x=1:10, > > f=c(rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10),rep("A",10),rep("B",10)), > > g=c(rep("3",10),rep("2",10),rep("1",10),rep("4",10),rep("5",10),rep("6",10),rep("8",10),rep("7",10),rep("9",10),rep("11",10),rep("12",10),rep("10",10))) > > > I would like to draw line plots using the function xyplot: > > library(lattice) > > xyplot(y ~ x | g , groups=g, data=tmp,type="l", > par.settings=list(superpose.line=list(col=c("red","blue"))), > auto.key=list(space="top", > text=levels(tmp$f),points=FALSE,lines=TRUE)) > > As it is, the colors are recycled alternately in the order the > individuals appear in the plot (1, 10, 11, 12, 2, ..., 9). > > How can I assign the red color to all individuals of group "A" and the > blue color to all individuals of group "B"?Why not simply use f as the grouping variable rather than g: xyplot(y ~ x | g , groups=f, data=tmp,type="l", par.settings=list(superpose.line=list(col=c("red","blue"))), auto.key=list(space="top", points=FALSE,lines=TRUE)) ? Or am I missing something? -Deepayan