我最近偶然在ggplot2中发现了一些奇怪的行为。以下代码
N <- 1000
coin <- rep(c(0,1),N/2)
N1 <- sum(coin)
N0 <- sum(1-coin)
values <- rep(0,N)
values[coin==0] <- rnorm(N0,mean=0,sd=1)
values[coin==1] <- rnorm(N1,mean=0,sd=1)
dat = data.frame('Value'=values,'Category'=as.factor(coin))
创建一个数据集,该数据集包含一个数字列和一个因子列,同样数量的事件属于这两个类别中的每一个:
> summary(dat)
Value Category
Min. :-3.901785 0:500
1st Qu.:-0.669807 1:500
Median : 0.020031
Mean :-0.008229
3rd Qu.: 0.650803
Max. : 3.195819
但是,在绘制按类别细分的“值”列时,类别1的标准化程度要大于类别0:
ggplot(dat,aes(x=Value,fill=Category)) + geom_histogram(alpha=0.5) + theme_bw()
这看起来很奇怪。对于两个直方图,bin宽度看起来是相同的,因为它们应该如此,但事件的总计数不等于它们应该是的。 0类直方图实际上是整个数据集的直方图:
ggplot(dat,aes(x=Value)) + geom_histogram(alpha=0.5) + theme_bw()
这是一个ggplot2错误,还是我犯了一些错误我还没注意到? (如果我将类别0和1替换为&#39; A&#39;以及&#39; B&#39;顺便说一句,我会得到同样的结果。
系统详情: