如何自己设置直方图的bin中心值?

时间:2016-06-28 08:31:42

标签: r histogram distribution

假设我有一个如下所示的数据框

mat <- data.frame(matrix(data = rexp(200, rate = 10), nrow = 100, ncol = 10))

然后我可以使用

计算每个列的直方图
matAllCols <- apply(mat, 2, hist)

现在,如果你看看matAllCols $ break,你可以看到11,有时12等。 我想要的是为它设置一个阈值。例如,它应始终为12,每个bin中心之间的距离(以matAllCols $ mids存储)为0.01

当时对一列进行操作似乎很简单,但是当我尝试为所有列执行此操作时,它不起作用。这也只是休息,如何设置中频也不是直截了当的

matAllCols <- apply(mat, 2, function(x) hist(x , breaks = 12))

无论如何要做到这一点?

2 个答案:

答案 0 :(得分:0)

您正在寻找

set.seed(1)
mat <- data.frame(matrix(data = rexp(200, rate = 10), nrow = 100, ncol = 10))
matAllCols <- apply(mat, 2, function(x) hist(x , breaks = seq(0, 0.5, 0.05)))

或只是

x <- rexp(200, rate = 10)
hist(x[x>=0 & x <=0.5] , breaks = seq(0, 0.5, 0.05))

答案 1 :(得分:0)

您可以通过将直方图单元格之间的所有断点都设为breaks来解决问题。 (但是这是用stat.ethz.ch/R-manual/R-devel/library/graphics/html/hist.html写的@Colonel Beauvel说的)

set.seed(1); mat <- data.frame(matrix(data = rexp(200, rate = 10), nrow = 100, ncol = 10))
# You need to check the data range to decide the breakpoints.
range(mat) # [1] 0.002025041 0.483281274
# You can set the breakpoints manually.
matAllCols <- apply(mat, 2, function(x) hist(x , breaks = seq(0, 0.52, 0.04)))