查找使用 ggplot2 绘制的直方图的 binwidth
Find binwidth of Histogram plotted using ggplot2
我在没有使用 binwidth 属性的情况下使用 ggplot 绘制了一个简单的直方图。
但是,我想查看直方图的 binwidth 值。
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)
head(df)
library(ggplot2)
ggplot(df, aes(x=weight)) + geom_histogram()
如何查看这个值?
谢谢
这里有两种方法。
- 用
ggplot_build
创建一个列表对象。它的第一个成员有 data.frame data
和 xmin
和 xmax
。这些值之间的差异是 binwidth;
- 使用
layer_data
,上面的过程更直接。它提取了data.frame
,其余相同。
由于 floating-point 精度问题,unique
的 return 值不是长度为 1 的向量。可以使用任何值。
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)
library(ggplot2)
gg <- ggplot(df, aes(x=weight)) + geom_histogram()
gg_build <- ggplot_build(gg)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
bin_width <- gg_build$data[[1]]$xmax - gg_build$data[[1]]$xmin
unique(bin_width)
#> [1] 1.344828 1.344828 1.344828
diff(range(df$weight))/30
#> [1] 1.3
gg_data <- layer_data(gg)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
unique(gg_data$xmax - gg_data$xmin)
#> [1] 1.344828 1.344828 1.344828
bw <- unique(gg_data$xmax - gg_data$xmin)[1]
bw
#> [1] 1.344828
由 reprex package (v2.0.1)
于 2022-02-15 创建
我在没有使用 binwidth 属性的情况下使用 ggplot 绘制了一个简单的直方图。 但是,我想查看直方图的 binwidth 值。
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)
head(df)
library(ggplot2)
ggplot(df, aes(x=weight)) + geom_histogram()
如何查看这个值?
谢谢
这里有两种方法。
- 用
ggplot_build
创建一个列表对象。它的第一个成员有 data.framedata
和xmin
和xmax
。这些值之间的差异是 binwidth; - 使用
layer_data
,上面的过程更直接。它提取了data.frame
,其余相同。
由于 floating-point 精度问题,unique
的 return 值不是长度为 1 的向量。可以使用任何值。
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("F", "M"), each=200)),
weight=round(c(rnorm(200, mean=55, sd=5), rnorm(200, mean=65, sd=5)))
)
library(ggplot2)
gg <- ggplot(df, aes(x=weight)) + geom_histogram()
gg_build <- ggplot_build(gg)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
bin_width <- gg_build$data[[1]]$xmax - gg_build$data[[1]]$xmin
unique(bin_width)
#> [1] 1.344828 1.344828 1.344828
diff(range(df$weight))/30
#> [1] 1.3
gg_data <- layer_data(gg)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
unique(gg_data$xmax - gg_data$xmin)
#> [1] 1.344828 1.344828 1.344828
bw <- unique(gg_data$xmax - gg_data$xmin)[1]
bw
#> [1] 1.344828
由 reprex package (v2.0.1)
于 2022-02-15 创建