Условие суммирования..count.. по переменной огранки

Я пытаюсь аннотировать гистограмму с процентом наблюдений, попадающих в это ведро, в пределах аспекта. Этот вопрос очень тесно связан с этим вопросом: Показывайте % вместо количества в диаграммах категориальных переменных , но введение огранки вводит морщину. Ответ на связанный с этим вопрос состоит в том, чтобы использовать stat _bin с текстом geom, а затем создать метку следующим образом:

 stat_bin(geom="text", aes(x = bins,
         y =..count..,
         label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
         )

Это прекрасно работает для неграненого -графика. Однако с гранями эта сумма (..count.. )суммируется по всему набору наблюдений без учета граней. График ниже иллюстрирует проблему ---, обратите внимание, что проценты не составляют 100% в пределах панели.

enter image description here

Вот собственно код рисунка выше:

 g.invite.distro <- ggplot(data = df.exp) +
 geom_bar(aes(x = invite_bins)) +
 facet_wrap(~cat1, ncol=3) +
 stat_bin(geom="text", aes(x = invite_bins,
         y =..count..,
         label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
         ),  
         vjust = -1, size = 3) +
  theme_bw() + 
scale_y_continuous(limits = c(0, 3000))

ОБНОВЛЕНИЕ :В соответствии с запросом, вот небольшой пример -, создающий проблему:

df <- data.frame(x = c('a', 'a', 'b','b'), f = c('c', 'd','d','d'))
ggplot(data = df) + geom_bar(aes(x = x)) +
 stat_bin(geom = "text", aes(
         x = x,
         y =..count.., label =..count../sum(..count..)), vjust = -1) +
 facet_wrap(~f)

enter image description here

10
задан Community 23 May 2017 в 12:02
поделиться