Nus*_*sig 4 r histogram ggplot2
我想知道ggplot2为给定的bin宽度创建的直方图中第一个bin的默认原点.不幸的是,我没有找到在帮助页面的任何信息geom_histogram,geom_bar以及stat_bin.请在下面找到最小的直方图示例ggplot2.
library(ggplot2)
x <- rnorm(25)
binwidth <- (range(x)[2]-range(x)[1])/10
ggplot(data.frame(x=x), aes(x = x)) +
geom_histogram(aes(y = ..density..), binwidth = binwidth)
Run Code Online (Sandbox Code Playgroud)
默认情况下,直方图以0为中心,第一个条形xlimits为0.5*binwidth和-0.5*binwidth.从那里开始,杆width = binwidth在两个方向上继续,直到它们达到最小值和最大值.或者,如果数据全部> 0,则它们从(x+0.5)*binwidth包含数据的第一个开始.
对于您的示例(使用set.seed进行再现):
set.seed(1)
x <- rnorm(25)
binwidth <- (range(x)[2]-range(x)[1])/10
p <- ggplot(data.frame(x=x), aes(x = x)) +
geom_histogram(aes(y = ..density..), binwidth = binwidth)
Run Code Online (Sandbox Code Playgroud)
我们可以通过以下方式获得突破:
x1 <- ggplot_build(p)$data
Run Code Online (Sandbox Code Playgroud)
给我们休息时间:
x1[[1]]$x
[1] -2.4764874 -2.0954894 -1.7144913 -1.3334932 -0.9524952 -0.5714971 -0.1904990 0.1904990 0.5714971
[10] 0.9524952 1.3334932 1.7144913 2.0954894
Run Code Online (Sandbox Code Playgroud)
因此,为了获得最小值,我们需要将数据的最低值舍入为binwidth + 0.5的倍数(注意,我确定有更好的公式,但这样可行):
binwidth*(floor((min(x)-binwidth/2)/binwidth)+0.5)
-2.476487
Run Code Online (Sandbox Code Playgroud)
类似地,最大值是:
binwidth*(ceiling((max(x)+binwidth/2)/binwidth)+0.5)
2.095489
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |