我正在尝试复制此示例中的最后一个图: https://www.r-bloggers.com/plotting-individual-observations-and-group-means-with-ggplot2/
当我使用示例中的相同代码和数据时,我成功了。但是,如果我自己尝试它就行不通。
我的原始数据是长格式:
>>> json.dumps(_)
'"\\u00fc"'
总结如示例中所述,对我不起作用:
> head(summpas)
id session paradigm N mean sd se min firstq median thirdq max
1 1 s1 baseline 20 831.00 692.7155 154.8959 95 326.50 585.5 1327.50 2433
2 1 s1 post1 20 1344.65 1261.5589 282.0931 107 315.25 1008.5 2105.00 4621
3 1 s1 post2 20 1058.05 856.6661 191.5564 105 144.50 1064.0 1915.25 2427
4 1 s1 post3 20 1318.00 1016.1804 227.2248 95 381.75 1289.5 1741.50 3688
6 1 s2 baseline 20 1058.20 1118.8923 250.1919 10 131.00 314.5 1984.25 3042
7 1 s2 post1 20 1909.65 1478.1206 330.5178 59 760.50 1465.0 2808.00 4602
因此我使用:
> meansummpas <- summpas %>%
group_by(session, paradigm) %>%
summarise(mean = mean(mean))
> meansummpas
mean
1 949.5366
现在我尝试一下情节:
library(plyr)
meansummpas <- ddply(summpas, c("session", "paradigm"), summarise,
mean=mean(mean))
但我收到错误:
library(ggplot2)
ggplot(summpas, aes(x=paradigm, y=mean, group=id, colour=session)) + geom_line(aes(group=session), alpha=.3) + geom_line(data=meansummpas, alpha=.8, size=3)
我注意到的是示例中的数据和我的数据并不是完全相同的类(这也是未编号的数据):
Don't know how to automatically pick scale for object of type
tbl_df/tbl/data.frame. Defaulting to continuous.
Error: Aesthetics must be either length 1 or the same as the data (8): x, y,
group, colour
为什么会出现此错误?我究竟做错了什么? :) 非常感谢!!
答案 0 :(得分:1)
目前还不清楚你在绘制什么,因为你似乎已经总结了每个范例/会话。
似乎每组有一次观察的问题&#39;出现是因为你的x变量是分类的;这显然意味着分组。
但我确实设法获得了平均值的所有方法,但我不得不添加第8行和第9行。
summpas <- read.table(text='id session paradigm N mean sd se min firstq median thirdq max
1 1 s1 baseline 20 831.00 692.7155 154.8959 95 326.50 585.5 1327.50 2433
2 1 s1 post1 20 1344.65 1261.5589 282.0931 107 315.25 1008.5 2105.00 4621
3 1 s1 post2 20 1058.05 856.6661 191.5564 105 144.50 1064.0 1915.25 2427
4 1 s1 post3 20 1318.00 1016.1804 227.2248 95 381.75 1289.5 1741.50 3688
6 1 s2 baseline 20 1058.20 1118.8923 250.1919 10 131.00 314.5 1984.25 3042
7 1 s2 post1 20 1909.65 1478.1206 330.5178 59 760.50 1465.0 2808.00 4602
8 1 s2 post2 20 1060.20 1118.8923 250.1919 10 131.00 314.5 1984.25 3042
9 1 s2 post3 20 1980.20 1118.8923 250.1919 10 131.00 314.5 1984.25 3042
', header=TRUE, as.is=TRUE)
ggplot(summpas, aes(x=paradigm, y=mean)) + geom_path(aes(colour=session, group=session)) +
stat_summary(fun.y=mean, geom='line', aes(group=NA))