我一直在创建一个带有误差线的条形图来描绘我拥有的数据集的组差异。但是错误条形成了时髦,因为它们出现在酒吧上方和酒吧中间。
我的代码:
ggplot(MRS_Hippo_NAA_Cre_Data_copy, aes(Type, Hippo_6_9NAACre, fill=Type)) +
geom_bar(stat="summary", fun.y="mean", colour="black", size=.3) +
geom_errorbar(aes(ymin=meanNAA-NAAse, ymax=meanNAA+NAAse), width=.2,
position=position_dodge(.9)) + labs(x="Group", y="Right Posterior NAA/Cre") +
scale_fill_manual(values=c("#0072B2", "#D55E00"), name="Group") + theme(text =
element_text(size=18))`
这产生了这个图:
我使用以下函数计算了标准错误:
std <- function(x) sd(x)/sqrt(length(x))
x = Hippo_6_9NAACre
不确定为什么图表会产生时髦的错误条。有人可以帮助或提供见解吗?
答案 0 :(得分:1)
我最近遇到了类似的问题。 要解决它,首先你可能想要删除图层
geom_errorbar(aes(ymin=meanNAA-NAAse,
ymax=meanNAA+NAAse), width=.2, position=position_dodge(.9))
而是再次使用具有statsummary
功能的图层。这将生成为组分隔的误差线。
如您所希望的条形指示标准错误,您必须创建一个返回所需值的适当函数,以便可以从statsummary
使用。
在下面找到一个包含iris
数据集的工作示例。
library(ggplot2)
## create a function for standard error that can be used with stat_summary
# I created the function inspecting the results returned by 'mean_cl_normal' that is the
# function used in some examples of stat_summary (see ?stat_summary).
mean_se = function(x){
se = function(x){sd(x)/sqrt(length(x))}
data.frame(y=mean(x), ymin=mean(x)+se(x), ymax=mean(x)-se(x))
}
## create the plot
p = ggplot(iris, aes(x = Species, y = Sepal.Length), stat="identity") +
stat_summary(fun.y = mean, geom = "col", fill = "White", colour = "Black", width=0.5) +
stat_summary(fun.data = mean_se, geom = "errorbar", width=0.2, size=1)
# print the plot
print(p)