【问题标题】:Simple histogram plot wrong?简单的直方图错了吗?
【发布时间】:2014-01-12 15:02:39
【问题描述】:
test <- rep(5,20)
hist(test,freq=FALSE,breaks=5)

该向量包含值 5 的 20 倍。当我使用 freq=FALSE 和 breaks=5 绘制此图时,我希望在 x=5 处看到 1 个柱,高度 = 1.0,因为值 5 占了 100%数据。

为什么我看到的是 1 个从 x=0 到 x=5 且高度 = 0.2 的条??

【问题讨论】:

    标签: r histogram


    【解决方案1】:

    hist 绘制freq=FALSEprob=TRUE 时概率密度的估计值,因此直方图中条形的总面积总和为1。由于绘制的单个条的水平范围为(0,5),因此高度必须为0.2(5*0.2=1)

    如果您真的想要您期望的直方图(即高度对应于计数的分数,面积不一定总和为 1),您可以这样做:

     h <- hist(test,plot=FALSE)
     h$counts <- h$counts/length(test)
     plot(h)
    

    另一种可能性是强制条形宽度等于 1.0,例如

     hist(test,freq=FALSE,breaks=0:10)
    

    也许你想要

     plot(table(test)/length(test))
    

     plot(table(test)/length(test),lwd=10,lend="butt")
    

    ? 另见:How do you use hist to plot relative frequencies in R?

    【讨论】:

    • 那么我如何在高度 1.0 的值 5 处获得 1 条?
    • 不,我没有。但现在我已经尝试过了,我仍然得到相同的结果......?
    • 真的吗?你确定现在高度不是 1.0 吗?
    • 是的,高度为 1.0,但条形的宽度太大。我有 1 个大正方形,在 x 轴上的范围从 0 到 5。我需要值为 5 的 1 个条形图,这表明值 5 占数据的 100%。
    • @user3182532,如果 BenBolker 的回答正确地解决了您的问题,您可以考虑通过单击投票箭头下方的绿色复选标记来接受他的回答。谢了。
    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多