ggplot2 中直方图的密度值?

Density values of histogram in ggplot2?

在 base R 中,我们可以使用函数 hist() 创建给定变量的密度直方图,比如 x。如果我们写:

  h <- hist(x, freq=FALSE)

那么,h$mids 是包含每个 bin 的中点值的向量,h$density 包含每个 bin 的密度。我想用 ggplot2geom_histogram().

绘制我的密度直方图

有什么方法可以从 ggplot2 函数中检索相似的值(每个 bin 的中点和密度)?

您可以通过使用 ggplot() + geom_histogram() 创建直方图来完成此操作,然后使用 ggplot_build() 提取 bin 中点、最小值和最大值、密度、计数等。

这是一个使用内置 iris 数据集的简单示例:

library(ggplot2)

# make a histogram using the iris dataset and ggplot()
h <- ggplot(data = iris) +
  geom_histogram(mapping = aes(x=Petal.Width),
                 bins = 11)

# extract the histogram's underlying features using ggplot_build()
vals <- ggplot_build(h)$data[[1]]

# print the bin midpoints
vals$x
## 0.00 0.24 0.48 0.72 0.96 1.20 1.44 1.68 1.92 2.16 2.40

# print the bin densities
vals$density
## 0.1388889 1.0000000 0.2500000 0.0000000 0.1944444 0.5833333 0.5555556 0.5000000 0.3055556 0.2500000 0.3888889