ggplot2:无法从2个数据集复制图

时间:2017-09-15 11:26:02

标签: r plot ggplot2

我正在尝试复制此示例中的最后一个图: 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

为什么会出现此错误?我究竟做错了什么? :) 非常感谢!!

1 个答案:

答案 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))