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

使用ggplot2为绘图中每个数据点添加不同误差条的问题

问题解决:按组和周生成不同长度的误差条

你的问题出在直接对整个Weights列计算标准差,导致所有误差条用的是全局标准差,长度完全一致。要生成对应每组每周的误差条,需要先按Group和Weeks分组,计算每组每周的平均体重和标准差,再用汇总后的数据绘图。

步骤1:分组汇总数据

使用dplyr工具包对原始数据分组计算均值和标准差:

library(dplyr)
ww_summary <- ww_long %>%
  group_by(Group, Weeks) %>%
  summarize(
    mean_weight = mean(Weights),
    sd_weight = sd(Weights),
    .groups = "drop"
  )

步骤2:修改ggplot代码

用汇总后的ww_summary数据绘图,误差条使用分组计算的标准差:

library(ggplot2)
ggplot(ww_summary, aes(x = as.numeric(Weeks), y = mean_weight, group = Group, color = Group)) +
  geom_line(linewidth = 1.5) +
  geom_point(size = 5) +
  geom_errorbar(aes(ymin = mean_weight - sd_weight, ymax = mean_weight + sd_weight), 
                width = 0.2, size = 1) +
  labs(title = "Weekly Weights", x = "Age (Weeks)", y = "Weights (g)", color = "Group") +
  scale_x_continuous(breaks = unique(ww_long$Weeks), expand = c(0, 0)) +
  scale_y_continuous(breaks = seq(16, 32, by = 2), expand = c(0, 0), labels = function(x) round(x)) +
  coord_cartesian(ylim = c(16, 32))

关键说明

  • 原代码中scale_x_continuous的breaks参数错误使用了names(ww)[-1],这里替换为unique(ww_long$Weeks)来获取所有周数的刻度。
  • 汇总数据时添加.groups = "drop"是为了取消分组状态,避免后续绘图出现警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:33:40