首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R hist对geom_hist断点

R hist对geom_hist断点
EN

Stack Overflow用户
提问于 2015-08-19 18:07:14
回答 1查看 3K关注 0票数 4

我在R中同时使用了geom_hist和直方图,具有相同的断点,但得到了不同的图形。我做了一个快速的搜索,有人知道什么是定义中断以及它们为什么会有所不同吗?

这就产生了两个不同的情节。

代码语言:javascript
复制
set.seed(25)
data <- data.frame(Mos=rnorm(500, mean = 25, sd = 8))
data$Mos<-round(data$Mos)    

pAge <- ggplot(data, aes(x=Mos))
pAge + geom_histogram(breaks=seq(0, 50, by = 2))

代码语言:javascript
复制
hist(data$Mos,breaks=seq(0, 50, by = 2))

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-08-21 22:26:36

要在ggplot2中获得相同的直方图,您可以在scale_x_continuous中指定breaks,在geom_histogram中指定binwidth

此外,histggplot2中的直方图使用不同的默认值来创建间隔:

hist:右闭(左开)间隔.默认值:right = TRUE stat_bin (ggplot2):左闭(右开)间隔.默认值:right = FALSE

代码语言:javascript
复制
        **hist**    **ggplot2**
         freq1 Freq   freq2 Freq
    1    (0,2]    0   [0,2)    0
    2    (2,4]    2   [2,4)    2
    3    (4,6]    2   [4,6)    1
    4    (6,8]    1   [6,8)    2
    5   (8,10]    6  [8,10)    2
    6  (10,12]    9 [10,12)    7
    7  (12,14]   24 [12,14)   17
    8  (14,16]   27 [14,16)   26
    9  (16,18]   39 [16,18)   31
    10 (18,20]   48 [18,20)   46
    11 (20,22]   52 [20,22)   43
    12 (22,24]   38 [22,24)   57
    13 (24,26]   44 [24,26)   36
    14 (26,28]   46 [26,28)   52
    15 (28,30]   39 [28,30)   39
    16 (30,32]   31 [30,32)   33
    17 (32,34]   30 [32,34)   26
    18 (34,36]   24 [34,36)   29
    19 (36,38]   18 [36,38)   27
    20 (38,40]    9 [38,40)   12
    21 (40,42]    5 [40,42)    6
    22 (42,44]    4 [42,44)    0
    23 (44,46]    1 [44,46)    5
    24 (46,48]    1 [46,48)    0
    25 (48,50]    0 [48,50)    1

我包括了参数right = FALSE,所以直方图的间隔是左关闭的(右打开),就像它们在ggplot2中一样。我在两幅图中添加了标签,所以更容易检查间隔是否相同。

代码语言:javascript
复制
ggplot(data, aes(x = Mos))+
  geom_histogram(binwidth = 2, colour = "black", fill = "white")+
  scale_x_continuous(breaks = seq(0, 50, by = 2))+
  stat_bin(binwidth = 2, aes(label=..count..), vjust=-0.5, geom = "text")

代码语言:javascript
复制
hist(data$Mos,breaks=seq(0, 50, by = 2), labels =TRUE, right =FALSE)

要检查每个垃圾箱的频率:

代码语言:javascript
复制
freq <- cut(data$Mos, breaks = seq(0, 50, by = 2), dig.lab = 4, right = FALSE) 
as.data.frame(table(frecuencias))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32102608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档