将总计数作为水平线添加到facet_grid()中的直方图中

将总计数作为水平线添加到facet_grid()中的直方图中,r,ggplot2,histogram,facet,R,Ggplot2,Histogram,Facet,数据: 我有一个由4个变量和大约30万行组成的数据框架,其中包括一个唯一的帐户ID、一个以yyyy-mm-dd为单位的开始日期、一个开始年份,以及到目前为止客户拥有一个活跃帐户的总月数。下面的数据片段(不要让行号混淆,这显然是一个子集,如果需要更多数据,请告诉我): 问题(为什么要渲染分面打印): 显示所有年份的整个数据集的柱状图显示以下内容: 显然,这里的信息分布是混合的,但影响是未知的。首先,我想我应该用视觉工具检查时域效果。通过使用facets,我可以提供一个按年份划分的频率分布的序列直

数据:

我有一个由4个变量和大约30万行组成的数据框架,其中包括一个唯一的帐户ID、一个以yyyy-mm-dd为单位的开始日期、一个开始年份,以及到目前为止客户拥有一个活跃帐户的总月数。下面的数据片段(不要让行号混淆,这显然是一个子集,如果需要更多数据,请告诉我):

问题(为什么要渲染分面打印):

显示所有年份的整个数据集的柱状图显示以下内容:

显然,这里的信息分布是混合的,但影响是未知的。首先,我想我应该用视觉工具检查时域效果。通过使用facets,我可以提供一个按年份划分的频率分布的序列直方图,覆盖每年的KDE图

如果多个分布是一段时间内发生的某件事情的产物,我可以抽查相关的形状变化(即从单模式到多模式)。我使用以下代码生成此绘图:

maxten_time <- ggplot(ten.by.id, aes(max_ten)) 
                      + geom_histogram(colour="grey19", fill="orange", binwidth=2, stat="bin") 
                      + scale_y_continuous(breaks=seq(0,12000,by=100)) 
                      + scale_x_continuous(breaks=seq(0,180,by=45)) 
                      + labs(title ="Serial Distribution of Max Length of Tenure for all Customers by Start Date", x="Max Tenure(months)", y="# of Customers", colour="blue") 
                      + facet_grid(. ~ strt.yr) + geom_density(fill=NA, colour="orange", cex=1) + aes(y = ..count..)

maxten\u如果你简化你的问题,那么你可能会得到答案。例如,提供一些简化的数据,跳过所有不需要的ggplot代码,即我们真的需要了解主题吗?我编辑了一些,删除了一些不相关的代码。我不认为添加更多数据会给问题增加任何信息。目标只是在每个方面添加水平线或一些标记,以记录特定年份的新客户总数。第二个是添加一个辅助x轴,该轴是整个观察期内月数的标记(1998年至今,因此一条线标记为1到175)。当然,一个问题是,如果可以做到的话,由于刻面之间存在断点,如何正确对齐月度标记?
maxten_time <- ggplot(ten.by.id, aes(max_ten)) 
                      + geom_histogram(colour="grey19", fill="orange", binwidth=2, stat="bin") 
                      + scale_y_continuous(breaks=seq(0,12000,by=100)) 
                      + scale_x_continuous(breaks=seq(0,180,by=45)) 
                      + labs(title ="Serial Distribution of Max Length of Tenure for all Customers by Start Date", x="Max Tenure(months)", y="# of Customers", colour="blue") 
                      + facet_grid(. ~ strt.yr) + geom_density(fill=NA, colour="orange", cex=1) + aes(y = ..count..)