alphastats<-summarySE(map, measurevar="shannon", groupvars=c("age_class"))
age_class N shannon sd se ci
1 Non_Smoker 66 5.473424 0.4152997 0.05111986 0.1020934
2 Old_Smoker 47 5.271223 0.6046414 0.08819601 0.1775294
3 Young_Smoker 17 5.324977 0.8682071 0.21057116 0.4463909
嗨,所以我正在尝试将错误条添加到R中的ggplot2箱图。我有上面的数据框,为我的三个组中的每个组创建了必要的标准错误数据。
ggplot() +
geom_boxplot(data=map, aes(x=age_class, y=shannon, fill=age_class), na.rm= TRUE ) +
theme_bw() +
geom_jitter(data=map, aes(x=age_class, y=shannon), position=position_jitter(width=0.1)) +
labs(x="Group", y="Shannon Value") +
guides(fill=guide_legend(title="Group Type")) +
annotate("text", x=0.75, y=3.5, size=3, label=paste0("p-value =",alpha_p_round)) +
geom_errorbar(data=alphastats, aes(ymin=shannon-se, ymax=shannon+se))
当我尝试通过gg_errorbar()添加错误栏时,我收到错误:
“eval中的错误(expr,envir,enclos):找不到对象'x'
另外:警告信息:
1:以min(x,na.rm = na.rm):
min没有非缺失的参数;返回Inf
2:在max(x,na.rm = na.rm):
max没有非缺失的参数;返回-Inf
3:在min(diff(sort(x))):min没有非缺失参数;返回
Inf文件
有人能帮我弄清楚我做错了吗?
答案 0 :(得分:0)
您的示例不可重现,但根据您提供的示例数据,以下工作:
alphastats <- read.table(
text = " age_class N shannon sd se ci
1 Non_Smoker 66 5.473424 0.4152997 0.05111986 0.1020934
2 Old_Smoker 47 5.271223 0.6046414 0.08819601 0.1775294
3 Young_Smoker 17 5.324977 0.8682071 0.21057116 0.4463909", header = T)
library(ggplot2);
ggplot(alphastats, aes(x = age_class, y = shannon)) +
geom_point() +
theme_bw() +
labs(x = "Group", y = "Shannon Value") +
guides(fill=guide_legend(title = "Group Type")) +
geom_errorbar(aes(ymin = shannon - se, ymax = shannon + se))
答案 1 :(得分:0)
您尚未在x=age_class
中提供geom_errorbar
,因此geom_errorbar
并不知道错误栏的x坐标。如果您将x=age_class
添加到geom_errorbar
,则代码将有效。
您还可以稍微缩短代码。由于geom_errorbar
使用与其他两个geom相同的x
和y
变量,因此另一个选项是ggplot(map, aes(x=age_class, y=shannon)) + ...
。这意味着除非另有说明,否则所有geoms将分别使用map
数据框以及age_class
和shannon
列用于x和y。
然后,在geom_errorbar
中,您只需要为其提供新数据框以及ymin
和ymax
美学。但是,除非您希望x
使用与主y
调用中使用的列不同的列,否则您不需要提供geom_errorbar
或ggplot
美学。
所以代码是:
ggplot(map, aes(x=age_class, y=shannon)) +
geom_boxplot(aes(fill=age_class)) +
geom_jitter(width=0.1) + # geom_jitter takes a direct width argument. You can use the `position` argument, but it's not necessary.
geom_errorbar(data=alphastats, aes(ymin=shannon-se, ymax=shannon+se)) +
labs(x="Group", y="Shannon Value", fill="Group Type") + # Note that the fill label has been moved to labs
annotate("text", x=0.75, y=3.5, size=3, label=paste0("p-value =", alpha_p_round)) +
theme_bw()
您确定要geom_jitter
吗?如果您希望shannon
的平均值与错误栏重合,请使用geom_point
。如果您希望它们都移动相同的数量,请使用position_nudge
。