3

尝试对 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 调用工作正常,生成一个条形图,其中每个条形图由对应于级别 0、1 和 2 的 3 种颜色组成。图例显示了最终级别 (3),但由于权重始终为 0,因此它不会t 出现在图上。

但是,第二个 ggplot 调用返回错误。我原以为它会返回与以前相同的图,但只需将每个条的高度缩放到 1。知道为什么会发生这种情况,是否有解决方法?

4

1 回答 1

4

weight您使用position=fill. 如果你这样做:

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

然后它工作。

于 2013-02-19T14:26:59.970 回答