ggplot2的geom_bar在某些情况下使用position="fill"会出现错误

3

当我尝试使用position="fill"来设置geom_bar时,出现了错误。这是一个MWE:

temp = data.frame( X=rep(1:10,10), weight=runif(100), fill=rbinom(100,size=3,p=.5) )
temp$weight[temp$fill==3] = 0
ggplot( temp, aes(x=X, weight=weight, fill=as.factor(fill)) ) +
  geom_bar(bin_width=1)
ggplot( temp, aes(x=X, weight=weight, fill=as.factor(fill)) ) +
  geom_bar(bin_width=1,position="fill")

第一个ggplot调用可以正常工作,生成一个条形图,每个柱子由对应于水平0、1和2的3种颜色组成。图例显示最终水平(3),但由于权重始终为0,它不会出现在图表上。
然而,第二个ggplot调用返回一个错误。我原以为它会返回与之前相同的图,只是将每个柱子的高度增加到1。你知道为什么会发生这种情况吗?如果有解决方法,请告诉我。
1个回答

4

看起来当你使用 position=fill 时,它期望 weight 大于0。如果你这样做:

ggplot(temp[temp$weight > 0,], 
    aes(x=X, weight=weight, fill=factor(fill))) + 
    geom_bar(bin_width=1, position="fill")    

然后它就可以工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接