如何在ggplot2中为我的条形图添加SE错误栏?

时间:2017-07-02 16:32:28

标签: r ggplot2 bar-chart errorbar

我用ggplot2制作了一个简单的条形图,比较了2种昆虫的雄性和雌性的平均寿命(年龄)。 我的代码看起来像这样,“数据集”就是我的数据集......

    gplot(dataset, aes(Species, Age, fill=Sex))+
stat_summary(fun.y = mean, geom = "bar", position = "dodge")+
scale_fill_manual(values = c("Grey25", "Grey"))+
theme(legend.title = element_blank())+
scale_y_continuous(limits = c(0,15))

我尝试使用以下代码手动输入平均值±SE来设置误差条的限制。为简单起见,我们假设物种1的平均值= 10且SE = 0.5。

geom_errorbar(aes(ymin=9.5, ymax=10.5),width=.2,position=position_dodge(.9))

此代码确实有效,但它为我的绘图中的每个条设置了相同的误差条。

如何为我的情节中的每个条添加等于相应SE的误差线?

我对ggplot和R一般都很新,所以欢迎任何帮助/建议。

2 个答案:

答案 0 :(得分:8)

您不需要为您的情节添加stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge")

library(ggplot2)

ggplot(diamonds, aes(cut, price, fill = color)) +
  stat_summary(geom = "bar", fun.y = mean, position = "dodge") +
  stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge")

如果您希望事先计算这些值,可以这样做:

library(tidyverse)
pdata <- diamonds %>% 
  group_by(cut, color) %>% 
  summarise(new = list(mean_se(price))) %>% 
  unnest(new)


pdata %>% 
  ggplot(aes(cut, y = y, fill = color)) +
  geom_col(position = "dodge") +
  geom_errorbar(aes(ymin = ymin, ymax = ymax), position = "dodge")

答案 1 :(得分:1)

您可以使用geom_errorbar geom。

在条形图上添加错误栏

您需要提供yminymax,因此您需要手动计算它。

来自geom_errorbar帮助页面:

p + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2)

科林