3

对于因子变量,stat_bin 中的密度图似乎没有按预期工作。y 轴上每个类别的密度为 1。

例如,使用钻石数据:

diamonds_small <- diamonds[sample(nrow(diamonds), 1000), ]
ggplot(diamonds_small, aes(x = cut)) +  stat_bin(aes(y=..density.., fill=cut))

在此处输入图像描述

我知道我可以使用

stat_bin(aes(y=..count../sum(..count..), fill=cut))

让它工作。但是,根据 stat_bin 的文档,它应该适用于分类变量。

4

1 回答 1

2

group您可以通过手动设置美学 来获得您(可能)想要的东西。

ggplot(diamonds_small, aes(x = cut)) +  stat_bin(aes(y=..density..,group=1))

但是,您不能轻松地在组内进行不同的填充。您可以自己总结数据:

library(plyr)
ddply(diamonds_small,.(cut),
         function(x) data.frame(dens=nrow(x)/nrow(diamonds_small)))
ggplot(dd_dens,aes(x=cut,y=dens))+geom_bar(aes(fill=cut),stat="identity")

总结步骤的稍微紧凑的版本:

as.data.frame.table(prop.table(table(diamonds_small$cut)))
于 2013-07-01T14:11:37.663 回答