You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ggplot2绘制带误差棒的柱状图出现异常求助

问题解决:ggplot2柱状图Y轴混乱与误差棒不显示的修复

你的代码直接使用原始观测数据绘制,导致两个核心问题:

  1. 每个locyear分组下存在多条adry记录,geom_bar(stat="identity")会把所有记录的adry值堆叠,造成Y轴数值异常膨胀;
  2. 未按分组计算标准差,误差棒无法基于每组的统计量正确生成。

修复步骤:

  1. 先对数据按locyear分组,计算每组adry的均值(作为柱状图高度)和标准差(用于误差棒);
  2. 使用汇总后的统计数据绘图。

完整代码:

# 加载依赖包
library(dplyr)
library(ggplot2)

# 读取并预处理数据
crop.data1 <- read.csv("barleystarch1.csv", header = TRUE, stringsAsFactors = TRUE)
crop.data1$locyear <- as.factor(paste(crop.data1$location, "_", crop.data1$year, sep=''))

# 分组计算均值与标准差
summary_data <- crop.data1 %>%
  group_by(locyear) %>%
  summarise(
    mean_adry = mean(adry, na.rm = TRUE),
    sd_adry = sd(adry, na.rm = TRUE)
  )

# 绘制柱状图与误差棒
ggplot(summary_data) +
  geom_bar(aes(x = locyear, y = mean_adry), stat = "identity", fill = "grey", alpha = 0.5) +
  geom_errorbar(
    aes(x = locyear, y = mean_adry, ymin = mean_adry - sd_adry, ymax = mean_adry + sd_adry),
    colour = "orange", width = 0.2, alpha = 0.95, size = 0.5
  ) +
  theme_classic()

补充说明:

  • 用geom_errorbar替代geom_pointrange更适配柱状图的误差棒展示,width参数可调整误差棒的横向宽度;
  • 如果需要在柱状图顶部显示数据点,可额外添加geom_point(aes(y = mean_adry), colour = "orange", size = 2)。

内容的提问来源于stack exchange,提问作者Maany Ramanan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:10:27