Как использовать значения для создания гистограммы с накоплением?

Поэтому я создал три кадра данных в R с помощью функции count

scan_count_AB <- count(Hive_AB$Has_been_scanned == 1)
scan_count_C <- count(Hive_C$Has_been_scanned == 1)
scan_count_D <- count(Hive_D$Has_been_scanned == 1)

> scan_count_AB
      x freq
1 FALSE 1403
2  TRUE  627

> scan_count_C
      x freq
1 FALSE  167
2  TRUE  846

> scan_count_D
      x freq
1 FALSE  135
2  TRUE  880

Теперь я хочу создать три гистограммы, которые выглядят так

С накоплением гистограммы

Может кто-нибудь помочь мне, как это сделать?

1 ответ

Решение

Вы можете попробовать ggplot2/tidyverse

library(tidyverse)
# your data 
scan_count_AB <- data.frame(x= c(T, F), freq = c(1403, 627))
scan_count_C <- data.frame(x= c(T, F), freq = c(167, 846))
scan_count_D <- data.frame(x= c(T, F), freq = c(135, 880))
# and the plot
list(AB=scan_count_AB, C=scan_count_C, D=scan_count_D) %>% 
  bind_rows(.id = "id") %>% 
  group_by(id) %>% 
  mutate(perc = freq/(sum(freq))) %>% 
  mutate(x = factor(x, levels = c(T,F), labels=c("HNBS", "HBS"))) %>% 
  ggplot(aes(id, perc, fill = factor(x))) + 
   geom_col() +
   scale_y_continuous(labels = scales::percent) +
   scale_fill_discrete("") + 
   theme_bw() + 
   theme(legend.position = "bottom")

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

Другие вопросы по тегам