基于R绘制全天空气与蛇类体温平均值带多边形误差棒的图表
绘制带多边形误差带的空气与蛇类体温对比图
步骤1:数据准备与整理
先将宽格式数据转换为长格式,并计算每个时间点的均值及误差范围(以下以95%置信区间为例,可替换为标准差/标准误)。请将示例数据替换为你的实际dput数据:
# 加载依赖包 library(tidyverse) # 替换为你的实际dput数据 snake_temp <- structure(list( time = rep(c("00:00", "02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00"), each = 5), air_temp = rnorm(60, mean = 25, sd = 2), snake_A = rnorm(60, mean = 28, sd = 3), snake_B = rnorm(60, mean = 26, sd = 2.5), snake_C = rnorm(60, mean = 30, sd = 2.8) ), class = "data.frame", row.names = c(NA, -60L)) # 转长格式并计算统计量 temp_summary <- snake_temp %>% pivot_longer(-time, names_to = "group", values_to = "temperature") %>% group_by(time, group) %>% summarise( mean_temp = mean(temperature, na.rm = TRUE), se = sd(temperature, na.rm = TRUE)/sqrt(n()), lower = mean_temp - 1.96*se, # 95%置信区间下限 upper = mean_temp + 1.96*se # 95%置信区间上限 ) %>% ungroup() %>% mutate(time = factor(time, levels = unique(time))) # 固定时间顺序
步骤2:绘制带多边形误差带的对比图
用ggplot2的geom_ribbon实现多边形误差带,同时绘制均值折线和点:
ggplot(temp_summary, aes(x = time, y = mean_temp, group = group)) + # 多边形误差带(设置透明度避免遮挡) geom_ribbon(aes(ymin = lower, ymax = upper, fill = group), alpha = 0.2, color = NA) + # 均值折线 geom_line(aes(color = group), linewidth = 1) + # 均值点 geom_point(aes(color = group), size = 2) + # 图表标签 labs( x = "采样时间", y = "温度(℃)", title = "全天空气与蛇类体温对比", color = "类别", fill = "类别" ) + # 主题优化 theme_minimal() + theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.text.x = element_text(angle = 45, hjust = 1) # 旋转x轴文本防止重叠 )
关键调整说明
- 若用标准差作为误差范围,将
lower和upper改为mean_temp ± sd(temperature)即可。 - 若你的时间是
POSIXct格式,无需转因子,直接用x = time会自动按时间顺序排列。 geom_ribbon的color = NA用于隐藏误差带边框,避免线条杂乱。
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

