我在 R 中使用 geom_hist 和 histogram 使用相同的断点,但我得到了不同的图形。我进行了快速搜索,有没有人知道定义中断是什么以及为什么它们会有所不同
这些会产生两个不同的图。
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))
Run Code Online (Sandbox Code Playgroud)
hist(data$Mos,breaks=seq(0, 50, by = 2))
Run Code Online (Sandbox Code Playgroud)
要在ggplot2您指定breaksinsidescale_x_continuous和binwidthinside 中获得相同的直方图geom_histogram。
此外, hist直方图ggplot2使用不同的默认值来创建间隔:
hist:右闭(左开)区间。默认:right = TRUE
stat_bin(ggplot2): 左闭(右开)区间。默认:right = FALSE
**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
Run Code Online (Sandbox Code Playgroud)
我包含了参数,right = FALSE因此直方图间隔是左闭(右开),因为它们在ggplot2. 我在两个图中都添加了标签,因此更容易检查间隔是否相同。
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")
Run Code Online (Sandbox Code Playgroud)
hist(data$Mos,breaks=seq(0, 50, by = 2), labels =TRUE, right =FALSE)
Run Code Online (Sandbox Code Playgroud)
要检查每个 bin 中的频率:
freq <- cut(data$Mos, breaks = seq(0, 50, by = 2), dig.lab = 4, right = FALSE)
as.data.frame(table(frecuencias))
Run Code Online (Sandbox Code Playgroud)