如何扩大障碍。使用stat_bin作为ggplot中绘制的每个变量的一行计数?

时间:2016-03-23 16:18:05

标签: r ggplot2 histogram bar-chart

考虑以下玩具数据

dat=data.frame(value=runif(3000,1,5),
            name=rep(c('A','B','C','D','E','F')),
            code=c(rep('game1',1500),rep('game2',1500))
            )

我使用' identity'将其可视化为堆积直方图。来自geom_histogram

ggplot(dat,aes(x=value))+
    geom_histogram(position='identity',binwidth=0.5,aes(fill=name))+
    theme_bw()+
    scale_fill_brewer(palette="RdBu")+
    facet_wrap(~code)+stat_bin(aes(label=..count..),binwidth=0.5, geom="line", size=1,color='white')

如何使用stat(..count ..)将每个变量(名称)的观察数(计数)添加为一条线。因此,基本上是6行,每个条件对应整个图(两个面),这将反映每个变量每个仓中有多少观察值。

这个想法的出现是因为较低的条形图隐藏在较高的条形图后面,所以重叠的线条会显示条形结束的位置加上alpha透明度在这些情况下的效果并不是很好。

enter image description here

2 个答案:

答案 0 :(得分:1)

添加geom_density()似乎可以解决问题:

+ geom_density(aes(value, ..count.., color=name))

答案 1 :(得分:0)

您是否在寻找每个bin / variable组合的行?如果是这样,您是否尝试过查看geom_freqpoly()?

ggplot(dat,aes(x=value))+
 geom_histogram(position="identity",binwidth=0.5,aes(fill=name))+
 theme_bw()+
 scale_fill_brewer(palette="RdBu")+
 facet_wrap(~code)+geom_freqpoly(binwidth=0.5,aes(colour=name),size=1)

有关示例,请参阅here

你可以玩线尺寸,但我认为它仍然看起来很混乱。您也可以尝试使用geom_bar。类似的东西:

ggplot(dat,aes(x=value)) +
 geom_bar(position="dodge",binwidth=0.5,aes(fill=name))+
 theme_bw()+
 scale_fill_brewer(palette="RdBu")+
 facet_wrap(~code)

可能会有所帮助。您也可以使用条/箱之间的间距。