0

我试图创建一个简单的均值和交互折线图。我在 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)
4

1 回答 1

1

我认为您没有重现任何不一致之处,但是通过尝试将所有内容压缩到单个qplot调用中,您的问题部分被蒙上了阴影。

您的x变量Length是一个因素,因此ggplot明智地考虑Length 1Length 2保持独立,并且不会连接线。

其次,如果不强迫这些成为一个因素(因此是独立的),您将无法使用stat_summary您的价值观进行总结。x

我发现预先汇总数据而不依赖 ggplot 最容易。

例如

library(plyr)
data.means <- ddply(data, .(Group, Pos, Length), summarize, ReadT = mean(ReadT))

ggplot然后使用not构建绘图qplot,为您提供所需的灵活性(和透明度)。

连接线路的技巧是x在调用中考虑数字,例如在这里geom_line查看

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)
于 2013-02-26T23:49:07.297 回答