📅  最后修改于: 2023-12-03 15:06:32.300000             🧑  作者: Mango
在 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()
函数获取直方图的频率数据,并使用各种可视化工具进行可视化。