R 中的直方图,只有 1 个 bin 为零
Histogram in R with 1 bin for zeros only
是否可以在 R 中使用不同大小的 bin 制作直方图?我正在处理计数数据,零需要有自己的分箱,但其他数字可以分箱到任何有意义的地方。所有鱼类数量的单个直方图就可以了。
fish<-structure(list(num = c(0, 11, 1, 0,
13, 11, 0, 1, 0, 0, 11, 11, 0, 10, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 9, 0, 2, 1, 0,
7, 6, 0, 4, 8, 0, 8, 6, 0)),
class = "data.frame", row.names = c(NA,-50L))
使用cut让0单独存在,然后使用seq创建bins:
barplot(table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)), space = 0)
编辑: 第一个柱仅包含零,请参阅:
table(fish$num)
# 0 1 2 4 6 7 8 9 10 11 13
#31 4 1 1 2 1 2 1 1 4 2
table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE))
# [0,1) [1,4) [4,7) [7,10) [10,13)
# 31 5 3 4 5
您可以使用 hist()
函数的 breaks
参数指定任何您想要的中断。您应该将其与 freq = TRUE
参数结合使用,否则您将得到一个密度图,并且零处的密度将是无限的。不过,该图看起来不太好,因为零 bin 没有宽度:
hist(fish$num, breaks = c(0, 0, 5, 10, 15, 20), freq=TRUE)
我不确定你想要做什么。
是否可以在 R 中使用不同大小的 bin 制作直方图?我正在处理计数数据,零需要有自己的分箱,但其他数字可以分箱到任何有意义的地方。所有鱼类数量的单个直方图就可以了。
fish<-structure(list(num = c(0, 11, 1, 0,
13, 11, 0, 1, 0, 0, 11, 11, 0, 10, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 9, 0, 2, 1, 0,
7, 6, 0, 4, 8, 0, 8, 6, 0)),
class = "data.frame", row.names = c(NA,-50L))
使用cut让0单独存在,然后使用seq创建bins:
barplot(table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)), space = 0)
编辑: 第一个柱仅包含零,请参阅:
table(fish$num)
# 0 1 2 4 6 7 8 9 10 11 13
#31 4 1 1 2 1 2 1 1 4 2
table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE))
# [0,1) [1,4) [4,7) [7,10) [10,13)
# 31 5 3 4 5
您可以使用 hist()
函数的 breaks
参数指定任何您想要的中断。您应该将其与 freq = TRUE
参数结合使用,否则您将得到一个密度图,并且零处的密度将是无限的。不过,该图看起来不太好,因为零 bin 没有宽度:
hist(fish$num, breaks = c(0, 0, 5, 10, 15, 20), freq=TRUE)
我不确定你想要做什么。