R:ggplot2:将计数标签添加到密度叠加的直方图中

时间:2012-07-09 23:10:44

标签: r ggplot2 label histogram

我有一个时间序列,我正在检查数据异构性,并希望向一些数据分析师解释这方面的一些重要方面。我有一个由KDE图覆盖的密度直方图(为了显示两个图)。但是原始数据是计数,我想将计数值作为直方图条上方的标签。

以下是一些代码:

$tix_hist <- ggplot(tix, aes(x=Tix_Cnt)) 
             + geom_histogram(aes(y = ..density..), colour="black", fill="orange", binwidth=50) 
             + xlab("Bin") + ylab("Density") + geom_density(aes(y = ..density..),fill=NA, colour="blue") 
             + scale_x_continuous(breaks=seq(1,1700,by=100))

    tix_hist + opts(
       title = "Ticket Density To-Date",
       plot.title = theme_text(face="bold", size=18), 
       axis.title.x = theme_text(face="bold", size=16),
       axis.title.y = theme_text(face="bold", size=14, angle=90),
       axis.text.x = theme_text(face="bold", size=14),
       axis.text.y = theme_text(face="bold", size=14)
           )

我考虑过使用KDE带宽等推断计数值。是否可以对ggplot频率直方图的数字输出进行数据框架并将其添加为“图层”。我对layer()函数还不够精明,但任何想法都会有所帮助。非常感谢!

1 个答案:

答案 0 :(得分:2)

如果您希望y轴显示bin_count数字,同时在此直方图上添加密度曲线,

您可以先使用geom_histogram()并记录binwidth值! (这非常重要!),然后添加一层geom_density()来显示拟合曲线。

如果您不知道如何选择binwidth值,则可以计算:

my_binwidth = (max(Tix_Cnt)-min(Tix_Cnt))/30;

(这正是geom_histogram默认执行的操作。)

代码如下:

(假设您刚刚计算的binwith值为0.001)

tix_hist <- ggplot(tix, aes(x=Tix_Cnt)) ;

tix_hist<- tix_hist + geom_histogram(aes(y=..count..),colour="blue",fill="white",binwidth=0.001);

tix_hist<- tix_hist + geom_density(aes(y=0.001*..count..),alpha=0.2,fill="#FF6666",adjust=4);

print(tix_hist);