如何为ggplot2的geom_col图表添加误差线,无需切换为geom_bar
报错原因
geom_errorbar 要求必须显式指定对应x轴的美学映射,你当前的代码只传入了ymin和ymax两个参数,缺少x轴变量映射,因此触发报错。
修复后代码
不需要修改原有geom_col的写法,只需要给geom_errorbar补全x = Style的映射即可,还可以通过width参数调整误差线的横向宽度,优化显示效果:
library(dplyr) library(ggplot2) beer <- read.csv("http://users.stat.umn.edu/~helwig/notes/MNbeer.csv") dat <- beer %>% group_by(Style) %>% summarise(mean_abv = mean(ABV), sd_rating = sd(ABV)) dat$lower <- dat$mean_abv - dat$sd_rating dat$upper <- dat$mean_abv + dat$sd_rating ggplot() + geom_col(data = dat, aes(x = Style, y = mean_abv), position = "dodge", color = "black") + geom_errorbar(data = dat, aes(x = Style, ymin = lower, ymax = upper), width = 0.2) # 调整误差线宽度,可根据需求修改数值
补充说明
如果后续需要做多分组(fill映射分组)的簇状柱形图加误差线,只需要把fill变量同时放进geom_col和geom_errorbar的aes映射里,再统一设置position = position_dodge(width = 0.9)就能保证误差线和柱体居中对齐,不需要修改geom_col的基础写法。
内容的提问来源于stack exchange,提问作者tassones
相关产品推荐
相关产品推荐

