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

在R语言中无需外部库,能否为带正态曲线的直方图添加±error值的误差棒?

回答

当然可以!完全不需要借助任何外部库,用R基础绘图工具就能给你的直方图加上基于±error值的误差棒。我会基于你提供的代码修改,并详细说明每一步:

修改后的完整代码

# 导入数据
data <- diameters$V1
error <- 0.005 # 单位:mm

# 绘制直方图
h <- hist(data, breaks = "FD", density = 10, col = "lightblue", xlab = "直径", main = "整体直径分布")

# 生成正态拟合曲线
xfit <- seq(min(data), max(data), length = 40)
yfit <- dnorm(xfit, mean = mean(data), sd = sd(data))
yfit <- yfit * diff(h$mids[1:2]) * length(data)

# 绘制正态曲线
lines(xfit, yfit, col = "black", lwd = 2)

# 用基础R的arrows()函数添加误差棒
# 这里给每个直方图柱子顶部添加水平误差棒(对应直径的测量误差)
arrows(x0 = h$mids - error, y0 = h$counts,
       x1 = h$mids + error, y1 = h$counts,
       code = 3, angle = 90, length = 0.05, col = "red", lwd = 1.5)

关键部分解释

  • 我们用R自带的arrows()函数实现误差棒,完全不需要安装任何外部库
  • 参数细节:
    • x0和x1:设置误差棒的左右端点,基于每个柱子的中心h$mids分别减去/加上error值,刚好对应你给定的±0.005mm误差
    • y0和y1:都设为柱子的顶部高度h$counts,这样误差棒是水平的,契合直径测量误差的场景
    • code = 3:让误差棒两端都显示短横线(也就是误差帽)
    • angle = 90:让误差帽和误差棒垂直,看起来更规范
    • length = 0.05:控制误差帽的长度,你可以根据图表大小调整这个值
    • col和lwd:设置误差棒的颜色和粗细,方便和直方图、拟合曲线区分开

可选:垂直误差棒(如果需要)

要是你需要的是垂直方向的误差棒(比如基于计数的误差),只需要调整arrows()的参数即可:

# 垂直误差棒示例
arrows(x0 = h$mids, y0 = h$counts - error,
       x1 = h$mids, y1 = h$counts + error,
       code = 3, angle = 90, length = 0.05, col = "blue", lwd = 1.5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:08:24