gpt4 book ai didi

r - 基本图形和 ggplot2 之间的直方图 binwidth (in) 一致性

转载 作者:行者123 更新时间:2023-12-03 23:18:49 24 4
gpt4 key购买 nike

我遇到了以下场景......

以下代码生成 2 个相同的直方图:

library(ggplot2)
data("diamonds")
ggplot(diamonds, aes(x=price)) + geom_histogram(binwidth=1000)
qplot(price, data = diamonds, binwidth = 1000)

但是,我不明白他们是如何推导出左边的第一个条形/垃圾箱的,事实上,整个直方图对我来说似乎是错误的。
enter image description here

另一方面:
hist(diamonds$price,breaks = seq(0,20000, by=1000))

产生以下对我来说似乎正确的图表:
enter image description here

为了验证数据,我运行了以下代码:
br = seq(0,20000,by=1000)

ranges = paste(head(br,-1), br[-1], sep=" - ")
freq = hist(diamonds$price, breaks = br, include.lowest=TRUE, plot=FALSE)

data.frame(range = ranges, frequency = freq$counts)

它产生:
           range frequency
1 0 - 1000 14524
2 1000 - 2000 9683
3 2000 - 3000 6129
4 3000 - 4000 4225
5 4000 - 5000 4665
...

那么 ggplot 中的第一个 bar/bin 在哪里?或 qplot来自?

最佳答案

ggplot 直方图条以 0、1000、2000 等为中心,而基本直方图条以 500、1500、2500 等为中心。要检查这一点,请将每个直方图中的条数与我们设置的表数进行比较明确打破。

table(cut(diamonds$price, breaks=seq(-500,20000,1000)))

(-500,500]       (500,1.5e+03]   (1.5e+03,2.5e+03]   (2.5e+03,3.5e+03]   (3.5e+03,4.5e+03] 
1749 18261 7532 4958 4535
etc.

theme_set(theme_classic())
ggplot(diamonds, aes(x=price)) +
geom_histogram(binwidth=1000, fill="grey80", colour="black", lwd=0.2) +
stat_bin(binwidth=1000, geom="text", aes(label=..count..),
position=position_stack(vjust=0.5), size=3)

enter image description here

对于基础直方图:
freq = hist(diamonds$price)$counts
tab = unname(table(cut(diamonds$price, breaks=seq(0,19000,1000))))

cbind(freq, tab)

       freq   tab
[1,] 14524 14524
[2,] 9683 9683
[3,] 6129 6129
[4,] 4225 4225
[5,] 4665 4665
[6,] 3163 3163
[7,] 2278 2278
[8,] 1668 1668
[9,] 1307 1307
[10,] 1076 1076
[11,] 934 934
[12,] 825 825
[13,] 701 701
[14,] 603 603
[15,] 504 504
[16,] 513 513
[17,] 425 425
[18,] 405 405
[19,] 312 312


要在 ggplot 直方图中获得相同的中断,您可以使用 center除了 binwidth 之外的参数:
ggplot(diamonds, aes(x=price)) + 
geom_histogram(binwidth=1000, center=500, fill="grey80", colour="black", lwd=0.2) +
stat_bin(binwidth=1000, center=500, geom="text", aes(label=..count..),
position=position_stack(vjust=0.5), size=3)

enter image description here

关于r - 基本图形和 ggplot2 之间的直方图 binwidth (in) 一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com