开发者

How to plot two lines by factor in a trellis graph?

Define:

df <- data.frame(
        line1 = rep(seq(1,5,by=1),2), 
        line2 = rep(seq(2,6,by=1),2),
        index = rep(seq(1,5,by=1),2),
        factor=rep(c("a","b"),each=5))

where line1 and line2 are two variables, say height and weight.

This is the simple style I would want for each panel (I would also like to change size of point markers, but not use how):

plot(df$line1[df$factor=="a"], type = "o", ylim=c(0,6))
lines(df$line2[df$factor=="a"], type = "o", lty=2, pch=0)

When I try this:

library(lattice)
xyplot(c(line1,line2)~index|factor,data=df,type="o")

the program 开发者_运维技巧treats all points as if they belong on one line.

In addition I am not sure how to feed in the arguments for plot style to get the desired results.

PS1. Surprisingly I have Googled around and found lots of scatter plots (with linear fits, densities, etc.) and histogram examples of trellis graphs, but not one of the simple thing I am trying to do.

PS2. I would like to tag this question trellis but do not have reputation points to create tag. Any volunteers?


The answer is actually very simple. Instead of combining line1 and line2 to a vector, just use the extended formula interface of xyplot :

xyplot(line1+line2~index|factor,data=df,type="o")

gives :

How to plot two lines by factor in a trellis graph?

Check also ?xyplot read through the heaps of text and play a bit with the examples there. You'll find out how to customize this with titles, legends and the likes.

As you labeled ggplot2 as well, this is one possibility of getting it done with that package :

require(ggplot2)
require(reshape)
df2 <- melt(df,id=c("index","factor"))

qplot(index,value,variable,facets = .~factor ,
          data=df2,geom="line",colour=variable)

Gives :

How to plot two lines by factor in a trellis graph?


Alternatively you can melt the data and use group:

library(reshape)
df2 <- melt(df,id.var=3:4)
xyplot(value~index|factor,data=df2,type="o",group=variable)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜