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