在某些情况下,当position =“fill”时,ggplot2 geom_bar会出错

时间:2013-02-19 14:15:54

标签: r ggplot2

尝试对geom_bar使用position =“fill”时出错。这是一个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调用工作正常,产生一个条形图,其中每个条形由3个颜色组成,对应于0,1和2级。图例显示最终级别(3),但由于权重始终为0,它没有出现在情节中。

但是,第二个ggplot调用会返回错误。我原本以为它会像以前一样返回相同的情节,但只是将每个柱子的高度调高到1.任何想法为什么会发生这种情况,如果有解决办法?

1 个答案:

答案 0 :(得分:4)

似乎期望weight为>使用position=fill时为0。如果你这样做:

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

然后它有效。