如何在列图中为多个组添加SEM?

时间:2017-06-26 16:07:53

标签: r ggplot2

我是这个网站的新手和一般编程所以如果这是一个重复的问题,我道歉。所以这是代码:

dataset %>% group_by(factor) %>%
  summarise(`variable`= mean(`variable`)) %>%
  ggplot(aes(factor, `variable`)) +
  geom_col(aes(fct_relevel(factor, "level", after=4L)))

为简单起见,我只是将因子变量和级别名称替换为相应的列类型。我只需要知道如何将SEM添加到该图中。谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以在mean_se使用ggplot2。这计算了我们的平均值和标准误差。由于输出为data.frame,因此我们必须将其包含在list内,我们可以使用tidyr::unnest取消它。之后,绘图正常进行。

library(dplyr)
library(ggplot2)
library(tidyr)
# or simply use `library(tidyverse)`

theme_set(theme_bw())


pdata <- iris %>% 
  group_by(Species) %>% 
  summarise(new = list(mean_se(Sepal.Length))) %>% 
  unnest(new)


pdata %>% 
  ggplot(aes(Species, y)) +
  geom_col(width = .5) +
  geom_errorbar(aes(ymin = ymin, ymax = ymax))

如果你想要因子的顺序,我只提供一次变量。您可以将所有映射到变量放入第一次调用aes

pdata %>% 
  ggplot(aes(fct_relevel(Species, "versicolor"), y, ymin = ymin, ymax = ymax)) +
  geom_col(width = .5) +
  geom_errorbar()

一般情况下,我建议绘制点和误差线,因为它们使用的墨水少得多,你可以更清楚地看到发生了什么。

ggplot(iris, aes(Species, Sepal.Length)) +
  stat_summary()
#> No summary function supplied, defaulting to `mean_se()