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

如何用R ggplot2绘制带误差线的重复样本均值折线图?

宽格式DataFrame转ggplot适配格式及绘制带误差线折线图

1. 数据格式转换(宽→长)

ggplot要求数据为长格式,用tidyr::pivot_longer(替代旧版gather)可快速拆分列名,分离样本与重复信息:

# 加载tidyverse(包含dplyr、tidyr、ggplot2)
library(tidyverse)

# 构造你的数据框
df <- tibble(
  Dilution = c(10, 40, 160, 640, 2560, 10240, 40960, 163840),
  A2T2.R1 = c(1,1,1,1,102,100,99,99),
  A2T2.R2 = c(1,1,1,1,101,101,92,97),
  X293T.R1 = c(1,1,1,1,98,97,98,99),
  X293T.R2 = c(1,1,1,1,98,97,98,98),
  TZMbl.R1 = c(1,1,1,36,80,97,98,99),
  TZMbl.R2 = c(1,1,1,33,78,99,93,100)
)

# 转换为长格式:拆分样本与重复列
df_long <- df %>%
  pivot_longer(
    cols = -Dilution,
    names_to = c("Sample", "Replicate"),
    names_sep = "\\."  # 以点号为分隔符拆分列名
  )

2. 计算统计量(均值、标准差/标准误)

按Dilution和Sample分组,计算每组的均值、标准差(或标准误):

df_stats <- df_long %>%
  group_by(Dilution, Sample) %>%
  summarise(
    mean_val = mean(value),
    sd_val = sd(value),          # 标准差
    se_val = sd(value)/sqrt(n()),# 标准误(标准差/√样本量)
    .groups = "drop"             # 取消分组状态
  )

3. 绘制带误差线的折线图

用ggplot绘制折线,同时添加误差线(可选择标准差或标准误):

ggplot(df_stats, aes(x = Dilution, y = mean_val, color = Sample)) +
  geom_line(linewidth = 1) +
  geom_point(size = 3) +
  # 误差线:这里用标准差,替换成se_val即可用标准误
  geom_errorbar(
    aes(ymin = mean_val - sd_val, ymax = mean_val + sd_val),
    width = 0.1 * max(df_stats$Dilution)/10  # 适配X轴的误差线宽度
  ) +
  scale_x_log10() +  # 稀释度为对数变化,用对数轴更直观
  labs(
    x = "稀释度",
    y = "数值",
    title = "各样本稀释梯度均值及误差线",
    color = "样本"
  ) +
  theme_bw()

补充:用reshape2::gather实现转换(旧方法)

若坚持使用reshape2的gather,需额外拆分列名:

library(reshape2)
df_gather <- gather(df, key = "Sample_Replicate", value = "value", -Dilution)
df_gather <- separate(df_gather, Sample_Replicate, into = c("Sample", "Replicate"), sep = "\\.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:29:59