问题
I made a simple barplot with ggplot2 comparing the mean lifespan (age) of males and females for 2 insect species. My code looks like this, with "dataset" being, well, my data set...
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))
I tried using the following code to manually enter the value of the mean±SE to set the limits for the error bar. For the sake of simplicity, let's assume mean=10 and SE=0.5 for males of species1.
geom_errorbar(aes(ymin=9.5, ymax=10.5),width=.2,position=position_dodge(.9))
This code does indeed work, but it sets the same error bars for each bar in my plot.
How can I add error bars equal to the corresponding SE for each bar in my plot?
I am fairly new to ggplot and R in general so any help/advice is welcome.
回答1:
You don't need more than to add stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge")
to your plot:
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")

If you prefer to calculate the values beforehand, you could do it like this:
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")
回答2:
You can add an error bar on your barplot with the geom_errorbar
geom.
You need to supply the ymin
and ymax
, so you need to compute it manually.
From the geom_errorbar
help page :
p + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2)
Colin
来源:https://stackoverflow.com/questions/44872951/how-do-i-add-se-error-bars-to-my-barplot-in-ggplot2