如何在R中创建带均值连线的四分位距须状图?
R绘制时间点均值+四分位距图的简便方法
步骤1:将宽格式数据转换为长格式
如果你的原始数据是宽格式(每个时间点对应单独一列),先用tidyr::pivot_longer转换为ggplot2适配的长格式:
# 加载tidyverse工具包(包含ggplot2、dplyr、tidyr) library(tidyverse) # 示例宽格式数据(替换为你的真实数据集) df <- tibble( Person = paste0("Person ", 1:100), Timepoint1 = rnorm(100, 2, 1), Timepoint2 = rnorm(100, 10, 2), Timepoint3 = rnorm(100, 30, 3) ) # 转换为长格式 df_long <- df %>% pivot_longer( cols = starts_with("Timepoint"), # 匹配所有时间点列 names_to = "Timepoint", # 生成时间点分组列 values_to = "Value" # 生成实验室数值列 )
步骤2:一键绘制目标图形
使用ggplot2的stat_summary函数,它会自动计算每个时间点的均值和四分位距,无需手动汇总数据,是最简便的实现方式:
ggplot(df_long, aes(x = Timepoint, y = Value)) + # 绘制四分位距误差棒(覆盖Q1到Q3区间) stat_summary( fun.data = function(x) data.frame( y = mean(x), ymin = quantile(x, 0.25), ymax = quantile(x, 0.75) ), geom = "errorbar", width = 0.2, # 误差棒两端宽度 color = "black" ) + # 绘制均值点 stat_summary( fun = mean, geom = "point", size = 3, # 点的大小 color = "black" ) + # 切换为简洁主题(贴近目标图风格) theme_classic() + # 设置坐标轴标签 labs( x = "测量时间点", y = "实验室数值" )
可选样式调整
如果需要更贴合目标图的视觉风格,可修改以下参数:
- 调整误差棒的
width、linetype(比如虚线linetype = "dashed") - 更换均值点的
shape(比如实心圆shape = 19) - 修改颜色、坐标轴字体大小等
内容的提问来源于stack exchange,提问作者spx31
相关产品推荐
相关产品推荐

