ggplot2 中直方图的密度值?
Density values of histogram in ggplot2?
在 base R 中,我们可以使用函数 hist()
创建给定变量的密度直方图,比如 x
。如果我们写:
h <- hist(x, freq=FALSE)
那么,h$mids
是包含每个 bin 的中点值的向量,h$density
包含每个 bin 的密度。我想用 ggplot2 和 geom_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
在 base R 中,我们可以使用函数 hist()
创建给定变量的密度直方图,比如 x
。如果我们写:
h <- hist(x, freq=FALSE)
那么,h$mids
是包含每个 bin 的中点值的向量,h$density
包含每个 bin 的密度。我想用 ggplot2 和 geom_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