我想要使用facet_grid函数绘制类似于以下数据集:
IV1<-c('DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO',
'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO',
'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO',
'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO', 'DO', 'PO')
IV2<-c('DF', 'DF', 'SN', 'SN', 'SV', 'SV', 'DF', 'DF', 'SN', 'SN', 'SV', 'SV',
'DF', 'DF', 'SN', 'SN', 'SV', 'SV', 'DF', 'DF', 'SN', 'SN', 'SV', 'SV',
'DF', 'DF', 'SN', 'SN', 'SV', 'SV', 'DF', 'DF', 'SN', 'SN', 'SV', 'SV',
'DF', 'DF', 'SN', 'SN', 'SV', 'SV', 'DF', 'DF', 'SN', 'SN', 'SV', 'SV')
IV3<-c('Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Child', 'Child', 'Child', 'Child', 'Child', 'Child',
'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Child', 'Child', 'Child', 'Child', 'Child', 'Child',
'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Child', 'Child', 'Child', 'Child', 'Child', 'Child',
'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Adult', 'Child', 'Child', 'Child', 'Child', 'Child', 'Child')
Subj<-as.character(c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8))
Value<-runif(48)
data<-data.frame(Subj, IV1, IV2, IV3, Value)
我可以成功绘制这样的平均数据:
library(ggplot2)
agg<-aggregate(Value~IV1*IV2*IV3, data=data, FUN="mean")
(P1<-ggplot(agg, aes(x=IV1, y=Value)) + theme_bw() + facet_grid(IV3~IV2) +
geom_point(aes(size=1.5, colour=factor(IV2), shape=factor(IV1))))
我也可以成功地绘制个别主题数据,如下:
(P2<-ggplot(data, aes(x=IV1, y=Value, group=Subj)) + theme_bw() +
facet_grid(IV3~IV2)+
geom_point(aes(group=Subj, colour=factor(IV2), shape=factor(IV1))))
然而,我理想地希望(a)聚合均值和Subj数据都在同一个图上(平均数据点更大)和(b)每个方面内的数据点要加入DO和PO点之间(对于聚合均值和单个Subj数据点)。
提前致谢!
答案 0 :(得分:4)
agg$Subj <- rep(1:2, each = nrow(agg) / 2)
ggplot(data, aes(x=IV1, y=Value, colour=factor(IV2), shape=factor(IV1), group = Subj)) +
facet_grid(IV3~IV2)+
geom_point() +
geom_point(data = agg, size = 5) +
geom_line() +
geom_line(data = agg, linetype = "dashed") +
theme_bw()
我正在使用另一个linetype
来直观地区分实际观察值和汇总值(只是一个需要考虑的想法)。