总和的百分比每个面 - 对于“补”(Sum percentages for each facet -

2019-06-27 17:31发布

我想创建一个方位barplot,用百分比加起来100每个面。 这个问题的解决似乎是一个组合group..density.. 。 如何过-在我看来,这group与冲突的fill

数据:

test <- data.frame(
     test1 = sample(letters[1:2], 100, replace = TRUE), 
     test2 = sample(letters[3:8], 100, replace = TRUE)
 )

这得到的百分比权:

ggplot(test, aes(test2)) +
     geom_bar(aes(y = ..density.., fill=test2,group=test1)) + 
     facet_grid(~test1)

公交车,你可以看到, fill被覆盖:

但是,以下方面的代码fill ,但给我的错百分比(金额以100为全图)(使用..density ..):

ggplot(test, aes(test2)) +
     geom_bar(aes(y = ..count../sum(..count..), fill=test2)) + 
     facet_grid(~test1)

相关:我这个老问题在一个方位ggplot条形图Y上实验室的百分比是多少? 。

是的 - 我可以创建额外的数据,但我觉得这属于表现层。 其实,这感觉就像一个错误?

Answer 1:

这是一个黑客位,但你可以参考..x..在中geom_bar通话。 唯一的问题是, ggplot认为这个numeric ,所以我已经裹挟因素并给予很好的标签调用内scale_fill_brewer

ggplot(test, aes(x= test2, group = test1)) + 
   geom_bar(aes(y = ..density.., fill = factor(..x..))) + 
   facet_grid(~test1) + 
   scale_fill_brewer(name = 'test2', breaks = 1:6, 
                     labels = levels(test$test2), palette = 'Set3')

有没有强迫比较..x..一个因素

ggplot(test, aes(x= test2, group = test1)) + 
  geom_bar(aes(y = ..density.., fill = ..x..)) +
   facet_grid(~test1)



文章来源: Sum percentages for each facet - respect “fill”
标签: r ggplot2