2017-07-02 65 views
0

我用ggplot2做了一个简单的barplot,比较了2种昆虫的雄性和雌性的平均寿命(年龄)。 我的代码看起来像这样,以“集”是,好了,我的数据集...如何将SE错误栏添加到ggplot2中的barplot中?

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相当新,所以任何帮助/建议是值得欢迎的。

+0

您需要先计算误差以及用于各条,并将它们变异成你的数据集。然后将'ymin'和'ymax'设置为这些列。 – Masoud

+0

这可能对你有所帮助。 http://environmentalcomputing.net/plotting-with-ggplot-bar-plots-with-error-bars/ – Masoud

+0

我似乎无法让'ymin'和'ymax'正常工作。 我跟着你提供的链接,用虹膜数据尝试了这个例子,那也不管用......我无法通过'group_by(Species)'。 显示以下错误消息:UseMethod(“group_by_”)中的错误:没有将'group_by_'的适用方法应用于类“factor”的对象。 –

回答

2

你并不需要更多的比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") 
+0

您建议我添加的代码行已经工作。谢谢。 –

0

您可以使用geom_errorbar几何图形在您的条形图上添加一个错误条。

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

geom_errorbar帮助页面:

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

科林