如何在R语言中绘制含均值、标准差、最小值及曲线占比的正态分布图?
问题描述
给定正态分布参数:
mean_value_VO2 <- 250.57 min_value_VO2 <- 128.16 sd_value_VO2 <- 351.74 # 曲线下面积占比:63.6%
需要绘制与目标论文中图6一致的图形,原尝试代码效果不符合预期,需在图中标注均值=250.57、最小值=128.16、标准差=351.74以及**曲线下面积占比63.6%**这些数值。
原尝试代码:
# Create a vector of x values x <- seq(min_value_VO2, mean_value_VO2 + 2*sd_value_VO2, length = 27) # Calculate the y values using the normal distribution function y <- dnorm(x, mean = mean_value_VO2, sd = sd_value_VO2) # Plot the curve plot(x, y, type = "l", xlab = "X-axis label", ylab = "Y-axis label")
改进后的解决方案
以下是基于base R的完整代码,实现平滑曲线绘制、目标区域填充及所有参数标注:
# 定义核心参数 mean_value_VO2 <- 250.57 min_value_VO2 <- 128.16 sd_value_VO2 <- 351.74 proportion <- 63.6 # 生成密集x值,保证曲线平滑 x_full <- seq(min_value_VO2 - sd_value_VO2, mean_value_VO2 + 2*sd_value_VO2, length = 1000) y_full <- dnorm(x_full, mean = mean_value_VO2, sd = sd_value_VO2) # 计算对应63.6%面积的分位点(从左到该点的面积占比) q <- qnorm(proportion/100, mean = mean_value_VO2, sd = sd_value_VO2) # 准备填充区域的坐标 x_fill <- seq(min_value_VO2, q, length = 500) y_fill <- dnorm(x_fill, mean = mean_value_VO2, sd = sd_value_VO2) # 初始化绘图,调整坐标轴标签和范围 plot(x_full, y_full, type = "l", lwd = 2, xlab = "VO2 指标", ylab = "概率密度", main = "正态分布曲线及区域占比", xlim = c(min_value_VO2 - 50, mean_value_VO2 + 2*sd_value_VO2 + 50)) # 填充曲线下63.6%的区域(半透明蓝色) polygon(c(min_value_VO2, x_fill, q), c(0, y_fill, 0), col = "#87CEEB80", border = NA) # 添加关键数值的垂直线 abline(v = mean_value_VO2, lty = 2, col = "red") # 均值虚线 abline(v = min_value_VO2, lty = 3, col = "darkgreen") # 最小值点线 abline(v = q, lty = 3, col = "blue") # 占比分位点线 # 添加文本标注,调整位置避免重叠 text(mean_value_VO2, max(y_full)*0.9, paste("均值 =", mean_value_VO2), col = "red", pos = 4) text(min_value_VO2, max(y_full)*0.8, paste("最小值 =", min_value_VO2), col = "darkgreen", pos = 4) text(q, max(y_full)*0.7, paste("曲线下面积占比 =", proportion, "%"), col = "blue", pos = 2) text(mean_value_VO2 + sd_value_VO2, max(y_full)*0.6, paste("标准差 =", sd_value_VO2), col = "black", pos = 4)
关键调整说明
- 用1000个点生成x值,替代原代码的27个点,让曲线更平滑自然
- 通过
qnorm()计算对应占比的分位点,填充该区域以直观展示63.6%的面积 - 用不同线型、颜色的垂直线区分均值、最小值等关键数值
- 调整标注文本的位置和颜色,确保信息清晰不重叠
- 自定义坐标轴标签和标题,贴合实际指标含义
内容的提问来源于stack exchange,提问作者user332276
相关产品推荐
相关产品推荐

