如何在R语言直方图中添加标注均值标准差的第二X轴?
给直方图添加标准差刻度的第二组X轴
要添加标注置信区间距离均值标准差数量的第二组X轴,你可以用axis()函数在图表顶部(side=3)绘制新轴,对应置信区间和均值的位置,标签使用标准差倍数格式(比如-2.576σ)。以下是修改后的完整代码:
mu <- 0.4 sd <- 0.3 dist <- rnorm(100000, mu, sd) density <- seq(min(dist), max(dist), length = 40) curve <- dnorm(density, mu, sd) # 定义置信区间对应的标准差倍数 sigma_vals <- c(-2.576, -1.96, -1.645, 0, 1.645, 1.96, 2.576) # 计算倍数对应的实际X轴位置 axis_pos <- mu + sigma_vals * sd # 生成标准差格式的标签 sigma_labels <- paste0(sigma_vals, "σ") hist(dist, probability = TRUE, ylim = c(0, max(curve)), xaxt = "n", col = "lightblue") # 底部原始数值轴 axis(side = 1, at = seq(-1, 1.5, 0.1), labels = seq(-1, 1.5, 0.1)) # 顶部标准差刻度轴(设置红色标签区分) axis(side = 3, at = axis_pos, labels = sigma_labels, col.axis = "darkred", lwd = 1) lines(density, curve, col = "black", lwd = 2.5) abline(v = c(mu-2.576*sd, mu+2.576*sd), col = "red", lty = 2, lwd = 2) abline(v = c(mu-1.96*sd, mu+1.96*sd), col = "purple", lty = 2, lwd = 2) abline(v = c(mu-1.645*sd, mu+1.645*sd), col = "darkgreen", lty = 2, lwd = 2) abline(v = mu, col = "black", lty = 2, lwd = 2) legend("topright", legend = c("99%-CI", "95%-CI", "90%-CI", "Mean"), fill = c("red", "purple", "darkgreen", "black"), cex = 1, x.intersp = 1, y.intersp = 1)
关键步骤说明:
- 整理置信区间对应的标准差倍数为向量
sigma_vals,包含负向区间、均值(0σ)和正向区间的倍数 - 通过
mu + sigma_vals * sd计算这些倍数对应的实际X轴位置 - 使用
axis(side=3)在图表顶部绘制第二组轴,传入位置和标准差标签,可通过col.axis设置标签颜色以区分原始轴
内容的提问来源于stack exchange,提问作者brad_skrrt
相关产品推荐
相关产品推荐

