Диаграмма с накоплением в столбике от group_by Tibble Not Stacking - PullRequest
0 голосов
/ 17 апреля 2019

Я использую R, и у меня есть сводная таблица количества людей, проходящих обучение, по возрасту и расовой этнической принадлежности. Люди классифицируются как лица, принадлежащие к расовой / этнической или этнической принадлежности меньшинства.

 RA3<- structure(list(Age = c(18, 18, 19, 19, 20, 20, 21, 21, 22, 23, 
23, 24, 24, 25, 25, 26, 26, 27, 29, 29, 31, 33, 37, 39, 39, 42, 
47, 47, 49, 49, 50, 50, 52, 57, 57, 60, 66, 66), Minority = c("Minority", 
"White", "Minority", "White", "Minority", "White", "Minority", 
"White", "White", "Minority", "White", "Minority", "White", "Minority", 
"White", "Minority", "White", "Minority", "Minority", "White", 
"White", "White", "Minority", "Minority", "White", "Minority", 
"Minority", "White", "Minority", "White", "Minority", "White", 
"Minority", "Minority", "White", "White", "Minority", "White"
), n = c(3L, 1L, 4L, 3L, 5L, 2L, 1L, 2L, 3L, 3L, 1L, 2L, 3L, 
8L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 2L, 1L, 1L, 2L, 3L, 5L, 1L, 
3L, 1L, 1L, 2L, 1L, 2L, 1L, 3L, 1L)), row.names = c(NA, -38L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), groups = structure(list(Age = c(18, 
18, 19, 19, 20, 20, 21, 21, 22, 23, 23, 24, 24, 25, 25, 26, 26, 
27, 29, 29, 31, 33, 37, 39, 39, 42, 47, 47, 49, 49, 50, 50, 52, 
57, 57, 60, 66, 66), Minority = c("Minority", "White", "Minority", 
"White", "Minority", "White", "Minority", "White", "White", "Minority", 
"White", "Minority", "White", "Minority", "White", "Minority", 
"White", "Minority", "Minority", "White", "White", "White", "Minority", 
"Minority", "White", "Minority", "Minority", "White", "Minority", 
"White", "Minority", "White", "Minority", "Minority", "White", 
"White", "Minority", "White"), .rows = list(1L, 2L, 3L, 4L, 5L, 
    6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
    19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 
    31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L)), row.names = c(NA, 
-38L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE))

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

Однако, когда я запускаю свой код:

libraray(ggplot2)
BarChartRA <- ggplot(RA3, aes(x = Age, y =n, fill = Minority)) + 
  geom_bar(data = subset(RA3, Minority == "Minority"), stat = "identity", position = position_stack()) +
  geom_bar(data = subset(RA3, Minority == "White"), stat = "identity", position = position_stack()) +
  scale_fill_manual(values=c("purple","dark green"))+
  labs(x = "Age(Years)", y = "Number of OJ's", title = "Number of Registered Apprenticeships by Race/Ethnicity, Colorado, 2018")
BarChartRA

Похоже, я не получаю составленную диаграмму.

enter image description here

Например, в возрасте 18 лет (крайний слева) должно быть 3 ученичества для меньшинств и 1 ученичество для белых в общей сложности 4. Но, как вы можете видеть, гистограмма показывает только 3. Классы перекрываются друг с другом.

Я думал, что оператор position = "stack" в операторе geom_bar решит эту проблему.

Что я делаю не так?

1 Ответ

0 голосов
/ 17 апреля 2019

Поскольку вы уже определили свое отображение в верхнем слое ggplot(RA3, aes(x = Age, y =n, fill = Minority)), и ваши данные аккуратны в длинном формате, вы можете просто сделать это

library(ggplot2)
df %>% ggplot(aes(x = Age, y = n, fill = Minority)) +
  geom_bar(stat = "identity",
           position = "stack") +
  scale_y_continuous(breaks = c(0:10))

Как видите, fillэстетически группирует данные на основе столбца Minority и будет соответствующим образом составлять столбцы.

Я верю, что происходит на вашем графике, так как вы указали всю таблицу, затем поднастроили ее дважды и задали position = "stack"это просто наложило один столбец на другой.

...