Аннотирование гистограммы с накоплением на графике ggplot с помощью процентов или долей - PullRequest
1 голос
/ 07 августа 2020

Чувак, я не могу понять ...

Я получил это

library(tidyverse)

mtcars %>%
    ggplot(aes(mpg, fill = factor(am))) +
    geom_histogram(position = "fill", bins = 7)

enter image description here

I want this

введите описание изображения здесь

1 Ответ

2 голосов
/ 07 августа 2020

Насколько мне известно, нет простого готового способа пометить гистограмму процентами. Вместо этого вам придется выполнять вычисления вручную. С этой целью я добавил вспомогательную функцию pct_bin, которая вычисляет долю каждой группы на ячейку, используя значения ..x.., ..count.. и ..group.., возвращаемые stat_bin. Попробуйте это:

library(ggplot2)

pct_bin <- function(group, x, count) {
  count_bin <- tapply(count, x, sum)
  
  count / rep(count_bin, length(unique(group)))
}

ggplot(mtcars, aes(mpg, fill = factor(am))) +
  geom_histogram(position = "fill", bins = 7) +
  geom_text(aes(label = ifelse(..group.. == 2, round(pct_bin(..group.., ..x.., ..count..), 2), ""),
                vjust = ifelse(round(pct_bin(..group.., ..x.., ..count..), 2) < 1, -.5, 1.5)), 
            position = "fill", stat = "bin",  bins = 7)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...