📜  从 R 中的直方图中提取频率计数(1)

📅  最后修改于: 2023-12-03 15:06:32.300000             🧑  作者: Mango

从 R 中的直方图中提取频率计数

在 R 中,我们可以使用 hist() 函数快速绘制一个直方图来查看数据的分布情况。然而,有时候我们也需要从这个直方图中获取频率计数数据,以便进一步分析或可视化。

获得直方图的频率数据

我们可以使用 hist() 函数的返回值来获取直方图的频率数据。hist() 函数返回一个列表(list),其中包含直方图的各种信息,主要包括:

  • $breaks:划分直方图的区间
  • $counts:每个区间的频数
  • $density:每个区间的概率密度
  • $mids:每个区间的中心点
  • $xname:x 轴名称
  • $equidist:区间是否等距

其中,我们可以通过 $counts 获取每个区间的频数,即直方图的频率数据。下面是一个简单的示例:

set.seed(123)
data <- rnorm(100)
h <- hist(data, breaks = 10)
counts <- h$counts
print(counts)

上面的代码中,我们生成了 100 个随机数,使用 hist() 函数绘制直方图,指定将数据分成 10 个区间,并将直方图的返回值保存在变量 h 中。然后,我们从 h 中获取 $counts,即直方图的频率数据,并将其打印出来。

得到的输出如下所示:

[1]  4  1  5 14 23 21 17  9  5  1

上面输出的含义是:直方图从左到右有 10 个区间,每个区间的频数分别是 4、1、5、14、23、21、17、9、5、1。

可视化直方图的频率数据

得到频率数据之后,我们可以使用各种可视化工具进行可视化。例如,我们可以使用 ggplot2 包来重新绘制直方图,代码如下:

library(ggplot2)
set.seed(123)
data <- rnorm(100)
h <- hist(data, breaks = 10)
counts <- h$counts
df <- data.frame(xmin = h$mids - diff(h$breaks) / 2, xmax = h$mids + diff(h$breaks) / 2, counts = counts)
ggplot(df, aes(xmin, counts, xmax = xmax)) +
  geom_rect(fill = "#008fd5") +
  theme_classic() +
  labs(x = "Values", y = "Frequency") +
  xlim(range(data))

上面的代码中,我们使用 ggplot2 包重新绘制直方图。我们首先根据 hist() 函数的返回值生成一个数据框,然后使用 geom_rect() 函数将直方图绘制出来。我们还加入了一些额外的美化,如 theme_classic()labs()xlim() 等。

得到的可视化效果如下所示:

总结

本文介绍了如何从 R 中的直方图中提取频率计数。可以使用 hist() 函数获取直方图的频率数据,并使用各种可视化工具进行可视化。