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

绘制freq=FALSE的直方图却显示整数Y轴值问题排查

问题原因分析

你遇到的问题核心是混淆了相对频率和直方图密度的计算逻辑,具体细节如下:

  • 当调用plot(h, freq = FALSE)时,R的plot.histogram函数会自动计算并展示密度值,而非你修改后的相对频率。密度的计算公式是:
    密度 = 组内观测数 / (总观测数 × 组距)
    
  • 你手动把h$counts改成了相对频率(counts / sum(counts)),这相当于把公式里的“组内观测数/总观测数”直接赋值给了counts。此时函数计算密度时,公式就变成了:
    密度 = 相对频率 / 组距
    
  • 你的百万级数据范围可能较大,或者R自动划分的组距(diff(h$breaks))很小(比如0.2),相对频率除以小组距就会得到远大于1的数值(比如相对频率最大为1时,1/0.2=5),这就是Y轴显示0-5的原因。
  • 而测试数据范围小(1-10),默认组距是1,密度=相对频率/1,结果刚好在0-1之间,符合预期。
解决方法

如果想展示相对频率,不要用freq=FALSE,改成freq=TRUE:

h = hist(temp_tally)
h$counts = h$counts / sum(h$counts)
plot(h, freq = TRUE)

如果想展示密度,不需要手动修改counts,直接调用hist时设置freq=FALSE即可:

hist(temp_tally, freq = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:14:55