R中直方图中的确切二进制数

Edu*_*rdo 14 statistics r histogram

我在R中制作直方图时遇到了麻烦.问题是我告诉它制作5个分区,但它会产生4个分区,然后我告诉它制作5个分区,它会产生8个分区.

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82);

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")
Run Code Online (Sandbox Code Playgroud)

关于如何修复它的任何想法?

Rob*_*man 21

使用breaks参数:

hist(data, breaks=seq(0,80,l=6),
       freq=FALSE,col="orange",main="Histogram",
       xlab="x",ylab="f(x)",yaxs="i",xaxs="i")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Sve*_*ein 13

指定为参数for的整数nclass用作建议:

这个号码只是一个建议

另一种解决方案是将cut矢量转换为指定数量的组并绘制结果:

plot(cut(data, breaks = 4))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 10

在Rob Hyndman的回答基础上:

也许更通用的解决方案是考虑数据的最小值和最大值以及中断次数= number_of_bins + 1来确定中断.

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
     freq=FALSE,col="orange",
     main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")
Run Code Online (Sandbox Code Playgroud)