R 中的直方图,仅包含 1 个 bin 用于零

Histogram in R with 1 bin for zeros only

提问人:Nate 提问时间:10/28/2021 最后编辑:zx8754Nate 更新时间:10/28/2021 访问量:918

问:

是否可以在 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))
r 直方图

评论

0赞 zx8754 10/28/2021
也许试试:?barplot(table(fish$num))
0赞 Nate 10/28/2021
接近,但也没有办法将其他数字装箱?这只是一个虚构的数据集,真实的数据集有 142 个唯一的数字,因此每个数字的箱会变得非常薄。
1赞 zx8754 10/28/2021
试试切?barplot(table(cut(fish$num, c(-1, seq(0, 15, 3)))), space = 0)
0赞 Nate 10/28/2021
够好了,哈哈。谢谢!

答:

3赞 zx8754 10/28/2021 #1

使用 cut 本身具有 0,然后使用 seq 创建 bin:

barplot(table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)), space = 0)

enter image description here


编辑:第一个条形仅包含零,请参阅:

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 

评论

0赞 Nate 10/28/2021
第一个箱子里有 1 吗?我认为这效果更好:barplot(table(cut(fish$num, c(-1, seq(0, 15, 3)))), space = 0)
0赞 zx8754 10/28/2021
@Nate看到编辑,第一个柱线只包含 0。
0赞 Nate 10/28/2021
完美,谢谢!
0赞 user2554330 10/28/2021 #2

您可以使用函数的参数将中断指定为所需的任何中断。您应该将其与参数结合起来,否则您将得到一个密度图,并且零点的密度将是无限的。不过,该图看起来不是很好,因为零箱没有宽度:breakshist()freq = TRUE

hist(fish$num, breaks = c(0, 0, 5, 10, 15, 20), freq=TRUE)

我不确定你想做什么。

enter image description here

评论

0赞 zx8754 10/28/2021
也许将中断更改为 0 值的获取柱。c(0, 1, 5, 10, 15, 20)
2赞 user2554330 10/28/2021
@zx8754,我认为你放弃直方图并使用条形图的想法更好。不过,我可能会尝试手动设置标签,例如.c("0", "1-5", "6-10", "11-15")