我试图创建一个简单的手段和交互线图。我在y轴上有一个DV(读取时间),在x轴上有一个因子(长度),另一个作为分组变量(位置)。
我使用的语法如下。对于两个长度条件中的每一个,数据在一条线上绘制为单个点,但是没有连接两个长度条件之间的线。我在语法方面缺少什么?
我正在使用R i386 2.15.2,并在上周更新了ggplot2。
这是一个可重现的例子
SubjectID <- c(101,101,101,101,101,101,101,101,102,102,102,102,102,102,102,102,
201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202)
Group <- c("PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA",
"PWA","PWA","PWA","PWA","PWA","Control","Control","Control",
"Control","Control","Control","Control","Control","Control",
"Control","Control","Control","Control","Control","Control",
"Control")
Length <- c(1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2)
Pos <- c(1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2)
ReadT <- c(6.7,7.6,6.4,7.9,5.4,6.4,6.3,7.4,6.9,7.2,6.7,7.4,5.7,6.1,6.5,7.8,
6.1,5.7,4.9,6.1,4.7,6.5,6.1,6.2,6.9,5.9,4.8,6.5,4.6,6.3,6.7,6.6)
data <- data.frame (SubjectID, Group,Length,Pos,ReadT)
data$Length <- factor(data$Length, order = TRUE,
levels = c(1,2),
labels = c("Length 1", "Length 2"))
data$Pos <- factor(data$Pos, order = TRUE,
levels = c(1,2),
labels = c("Position 1", "Position 2"))
qplot(Length, data=data, ReadT, geom=c("point", "line"),
stat="summary", fun.y=mean, group=Pos, colour=Pos,
facets = ~Group)
答案 0 :(得分:1)
我认为你没有复制任何不一致的内容,但是你的问题部分是通过尝试将所有内容压缩为单qplot
次电话而蒙上阴影。
您的x
变量Length
是一个因素,因此ggplot
合理地认为Length 1
和Length 2
是独立的,并且不会连接这些行
其次,您将无法使用stat_summary
按x
值进行汇总,而不会强迫这些值成为一个因素(因此也是独立的)。
我觉得最简单的假设数据并不依赖于ggplot。
例如
library(plyr)
data.means <- ddply(data, .(Group, Pos, Length), summarize, ReadT = mean(ReadT))
然后使用ggplot
而非qplot
构建图表,为您提供所需的灵活性(和透明度)。
让线路连接的技巧是在调用x
时考虑geom_line
数字,例如here
ggplot(data.means, aes(x= Length, y= ReadT, colour = Pos)) +
geom_point() +
geom_line(aes(x=as.numeric(Length))) +
facet_grid(~Group)
如果您坚持使用原始数据和stat_xxxx
功能,您还可以使用stat_smooth
复制此功能来估算均值(将x
归类为数字)
ggplot(data, aes(x = Length, y= ReadT, colour = Pos)) +
stat_summary(fun.y = 'mean', geom = 'point')+
stat_smooth(method = 'lm', aes(x=as.numeric(Length)), se = FALSE) +
facet_grid(~Group)