如何在 R 中绘制预分箱直方图

Posted

技术标签:

【中文标题】如何在 R 中绘制预分箱直方图【英文标题】:How to Plot a Pre-Binned Histogram In R 【发布时间】:2011-04-16 21:33:54 【问题描述】:

我有一个用于相当大数据集的预分箱频率表。也就是说,单列向量的 bin 和与这些 bin 关联的计数的单列向量。我希望 R 通过进一步分箱并对现有计数求和来绘制此数据的直方图。例如,如果在预分箱数据中我有类似 [(0.01, 5000), (0.02, 231), (0.03, 948)] 的东西,其中第一个数字是 bin,第二个是计数,我选择 0.04 作为新的 bin 宽度,我希望得到 [(0.04, 6179)]。在 R 中最快或最简单的方法是什么?

【问题讨论】:

【参考方案1】:

看起来 ggplot2 有答案。

 
library(ggplot2)
qplot(bin, data=cbind(bins,counts), weight=counts, geom="histogram")

【讨论】:

你很快;)我只是在查找我过去是如何做到这一点的。我看到了两种破解方法:1)ggplot2 和 2)从分箱数据中采样,然后重新分箱。我更喜欢 ggplot2,但重组是我在发现 ggplot 可以做到这一点之前编造的一个技巧。 什么是'bin'对象?【参考方案2】:

CRAN 上的新 HistogramTools 包有许多有用的功能可以做到这一点。在您的示例中,如果您想在直方图中的每个点将三个相邻的桶合并在一起以生成一个具有 1/3 桶的新直方图,您可以使用 MergeBuckets 函数。

install.packages("HistogramTools")
library(HistogramTools)
h <- hist(rexp(1000), breaks=60)
plot(MergeBuckets(h, adj.buckets=3))

或者,您还可以明确指定所需的新断点列表,而不是告诉 MergeBuckets() 始终合并相同数量的相邻存储桶。

【讨论】:

以上是关于如何在 R 中绘制预分箱直方图的主要内容,如果未能解决你的问题,请参考以下文章

R语言plotly可视化:plotly可视化多个数据集归一化直方图(historgram)设置不同的直方图使用不同的分箱大小(bin size)在直方图的底部边缘添加边缘轴须图rug

R Normalize 然后在 R 中一起绘制两个直方图

在 R 中绘制直方图

如何在R中将两个直方图一起绘制?

如何使用二维直方图/频率图在 R 中绘制二进制聚类数据

在 Spark 中创建分箱直方图