如何在R中绘制含95%/75%/50%可信区间的猎物箱线图?
在R中绘制带多百分位数区间的猎物饮食贡献箱线图
数据预处理
首先将你的统计数据整理成R可识别的数据框,注意避免列名含特殊字符(比如百分号),建议将列名替换为p2.5、p5这类格式:
# 替换为你的真实数据 diet_data <- data.frame( Species = c("南极磷虾", "乌贼", "鲱鱼"), Mean = c(12.5, 8.3, 15.7), SD = c(2.1, 1.5, 3.2), Mode = c(12, 8, 16), p2.5 = c(8.2, 5.1, 9.3), p5 = c(9.1, 5.8, 10.5), p25 = c(10.8, 6.7, 13.1), p50 = c(12.5, 8.3, 15.7), p75 = c(14.2, 9.9, 18.3), p95 = c(16.8, 11.5, 22.1), p97.5 = c(17.6, 12.1, 23.4) )
用ggplot2绘制自定义箱线图(推荐)
ggplot2支持灵活定义分位数区间,完美匹配你展示95%、75%、50%区间的需求:
library(ggplot2) ggplot(diet_data, aes(x = Species)) + # 外层须:95%可信区间(p2.5 ~ p97.5) geom_errorbar(aes(ymin = p2.5, ymax = p97.5), width = 0.2, color = "gray50") + # 中层线:75%区间(可替换为你需要的分位数,这里用p5 ~ p95示例) geom_errorbar(aes(ymin = p5, ymax = p95), width = 0.1, color = "#2c3e50") + # 箱体:50%区间(p25 ~ p75),中线为中位数p50 geom_boxplot(aes(ymin = p25, lower = p25, middle = p50, upper = p75, ymax = p75), stat = "identity", fill = "#3498db", width = 0.3) + # 标记均值点(红色菱形) geom_point(aes(y = Mean), color = "#e74c3c", size = 2, shape = 18) + # 自定义标签与主题 labs(title = "雄性海狗饮食贡献分位数区间", x = "猎物种类", y = "饮食贡献比例") + theme_minimal()
代码说明:
stat = "identity":告诉ggplot直接使用你提供的分位数数据,无需自动计算- 多层
geom_errorbar:分别展示不同置信水平的区间,可根据你的需求替换分位数列 geom_boxplot的参数:lower/upper对应箱体上下边界,middle对应中位数线
用基础绘图系统绘制(备选)
如果你偏好R基础绘图,可使用以下代码:
# 调整绘图边距 par(mar = c(5, 4, 4, 2) + 0.1) # 计算x轴位置 x_pos <- 1:nrow(diet_data) # 绘制50%区间箱体 boxplot(diet_data$p50 ~ diet_data$Species, boxwex = 0.3, col = "#3498db", ylim = range(c(diet_data$p2.5, diet_data$p97.5)), xlab = "猎物种类", ylab = "饮食贡献比例", main = "雄性海狗饮食贡献分位数区间") # 添加95%区间须 segments(x_pos, diet_data$p2.5, x_pos, diet_data$p97.5, col = "gray50") # 添加75%区间横向短线 segments(x_pos - 0.1, diet_data$p5, x_pos + 0.1, diet_data$p5, col = "#2c3e50") segments(x_pos - 0.1, diet_data$p95, x_pos + 0.1, diet_data$p95, col = "#2c3e50") # 添加均值标记 points(x_pos, diet_data$Mean, col = "#e74c3c", pch = 18, cex = 1.2)
内容的提问来源于stack exchange,提问作者lun xu
相关产品推荐
相关产品推荐

