You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:修正for循环代码,计算均值并在直方图中显示均值标记

修正后的R代码:直方图叠加均值标记
V_max = 10
V_min = 0

n = 1
H = 1

C = c(0, 0.01, 0.1, 1)

# 定义统一的x轴范围,避免子图刻度混乱
x_lim_min = V_min - 2
x_lim_max = V_max + 2

par(mfrow = c(length(C), 1), mar = c(2, 5, 2, 0), oma = c(1, 0, 0, 0))

V <- function(C, H, n) {
  1 / (1 + (C / H)^n) 
}

for(i in 1:length(C)){
  V_C <- V_max * V(C[i], H, n)
  x <- rnorm(1000, V_C, 1)
  
  # 计算当前数据集的均值
  x_mean <- mean(x)
  
  y <- hist(x, plot = FALSE, breaks = 20)
  
  # 绘制直方图,添加标题和坐标轴标签
  plot(y, col = 'black', xlim = c(x_lim_min, x_lim_max), 
       main = paste("C =", C[i]), xlab = "数值", ylab = "频数")
  
  # 在均值位置绘制半透明红色条形
  rect(xleft = x_mean - 0.1, xright = x_mean + 0.1, 
       ybottom = 0, ytop = max(y$counts), 
       col = rgb(1, 0, 0, 0.5), border = NA)
  
  # 添加均值数值标注
  text(x = x_mean, y = max(y$counts)*0.9, labels = paste("均值:", round(x_mean, 2)), 
       col = "white", font = 2)
}

关键改动说明

  • 补上了原始代码中缺失的x_lim_min和x_lim_max,确保所有子图的x轴范围统一,避免视觉混乱
  • 在循环内新增x_mean <- mean(x),直接计算当前生成数据集的均值
  • 使用rect()函数在均值位置绘制半透明红色条形,宽度设为0.2,高度覆盖直方图的最大频数,清晰标记均值位置
  • 额外添加了均值的数值标注,不用手动计算就能直观看到具体数值
  • 调整了par()的参数:把原本多余的length(C)+1改成length(C)(去掉了空行),同时优化边距让y轴的频数标签正常显示
  • 给每个直方图添加了标题,标注对应的C值,方便区分不同子图

内容的提问来源于stack exchange,提问作者user20501829

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:30:54