gpt4 book ai didi

r - 在 ggplot 中使用不相等的 bin 绘制直方图日期

转载 作者:行者123 更新时间:2023-12-04 11:38:13 25 4
gpt4 key购买 nike

我试图让 ggplot 生成一个包含 3 个月宽的 bin 的直方图。不是90天,而是3个月。就天数而言,这是不等宽的分箱。请注意,间隔 3 个月的刻度线工作正常。这是我遇到问题的 bin 宽度。这里有很多讨论,但我找不到解决方案。

Understanding dates and plotting a histogram with ggplot2 in R

这是问题的说明。请注意,我显然可以在 ggplot 之外聚合结果,然后绘制它们,也许作为 ggplot 中的因素。但我正在寻找一个全 ggplot 解决方案。

set.seed(seed=1)
dts<-as.Date('2012-01-01') + round(365*rnorm(500))
dts<-data.frame(d=dts)
g<-ggplot(dts,aes(x=d, y=..count..))

#this isnt what I want. It is 90 days, not 3 months.
#Setting binwidth=' 3 months' also doesnt work
g + geom_histogram(fill='blue',binwidth=90) +
scale_x_date(breaks = date_breaks('3 months'), #seq(as.Date('2008-1-1'), as.Date('2012-3-1'), '3 month'),
labels = date_format("%Y-%m"),
limits = c(as.Date('2010-1-1'), as.Date('2014-1-1'))) +
opts(axis.text.x = theme_text(angle=90))

#this doesnt work either.
#get: stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
# Error in `+.Date`(left, right) : binary + is not defined for Date objects
g + geom_bar(fill='blue') +
stat_bin(breaks=seq(as.Date('2010-1-1'), as.Date('2014-1-1'), '3 month')) +
scale_x_date(breaks = date_breaks('3 months'), #seq(as.Date('2008-1-1'), as.Date('2012-3-1'), '3 month'),
labels = date_format("%Y-%m"),
limits = c(as.Date('2010-1-1'), as.Date('2014-1-1'))) +
opts(axis.text.x = theme_text(angle=90))

也许答案是:ggplot 不会创建 3 个月宽(或 N 个月宽)的 bin。

最佳答案

如您所见,stat_bin将允许指定 bin 边缘。但是在处理日期的时候,往往需要手工将值转化为内部刻度才能工作。此外,在您的第二个示例中,您同时拥有 geom_bar和一个 stat_bin这是绘制两个不同的图层。这是一个工作版本:

g + stat_bin(breaks=as.numeric(seq(as.Date('2010-1-1'), 
as.Date('2014-1-1'), '3 month')),
fill = "blue",
position = "identity") +
scale_x_date(breaks = date_breaks('3 months'),
labels = date_format("%Y-%m"),
limits = c(as.Date('2010-1-1'), as.Date('2014-1-1'))) +
opts(axis.text.x = theme_text(angle=90))

enter image description here

请注意,我已经包装了 breaks论据 stat_binas.numeric .另外,我添加了一个 position="identity"论据 stat_bin消除有关不等 bin 宽度的警告(由于只有一组,因此不需要与任何东西堆叠)。

关于r - 在 ggplot 中使用不相等的 bin 绘制直方图日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12395548/

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