Гистограмма для группированных переменных нескольких категорий - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в R и хочу построить гистограмму для нескольких категорий данных, полученных из другой таблицы.Я пытаюсь использовать ggplot(), но не знаю, как создавать сегментированные гистограммы, используя его.

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

Я хочу построить сегментированную гистограмму с каждым сечением в качестве оси X и значениями каждой строки, расположенными один над другим (с метками).

Любая помощь будет высоко ценится!

  Section Neither.1.nor.2 Only.1 Only.2 Both.1.2
1       A              12      5      3        6
2       B              55     15      2       26
3       C              17     27     18       33
4       D              31     32     56       12

1 Ответ

0 голосов
/ 19 февраля 2019

С вашими данными (пожалуйста, в следующий раз скопируйте и передайте вывод из dput(yourdata)):

library(tidyverse)

tib <- tibble(
  Section           = LETTERS[1:4],
  'Neither 1 nor 2' = c(12, 55, 17, 31),
  'Only 1'          = c(5, 15, 27, 32),
  'Only 2'          = c(3, 2, 18, 56),
  'Both 1 & 2'      = c(6, 26, 33, 12)
)

Мы можем сделать это следующим образом (обн):

tib %>%
  gather(key = 'Category', value = 'Value', -Section) %>% 
  mutate(Category = factor(Category, unique(Category))) %>%
  ggplot(aes(x = Section, y = Value, fill = Category, label = Value)) +
  geom_bar(position = 'stack', stat = 'identity') +
  geom_text(position = 'stack', vjust = 1.5, colour = 'gray25', size = 2) +
  scale_fill_brewer(type = 'qual', palette = 'Accent') #+
  #ggthemes::theme_tufte()

barchart

Но было бы лучше установить show.legend = T и удалить текстовые метки.

...