Гистограмма с накоплением без заполнения?

У меня все настроено, и я просто пытаюсь показать гистограмму с накоплением.

Моя ось X будет отображать три бара: "влево", "середина" и "вправо"

Моя ось Y будет "total_completed_epa", связанной с каждым из баров.

Единственная проблема заключается в том, что total_completed_epa - это мутированная переменная, созданная суммой двух других столбцов в моем наборе данных. Я просто хочу показать пропорцию каждого столбца в столбце "total_completed_epa" с гистограммой с накоплением.

Данные:


pass_location Air_Epa_Play YAC_EPA_Play Total_Completed_EPA
middle         0.263         0.434           0.697
left           0.086         0.439           0.525
right          0.082         0.442           0.524

Очистка данных:

pass_epa <- pbp_2018 %>%
  filter(play_type %in% c("pass", "no_play", "qb_spike"),
         epa != is.na(epa)) %>%
  group_by (pass_location) %>%
  summarize(pass_epa = sum(epa),
            air_epa = sum(comp_air_epa),
            yac_epa = sum(comp_yac_epa),
            pass_plays = n ()) %>%
  ungroup() %>% 
  mutate(EPA_Play = round(pass_epa / pass_plays, 3),
         Air_Epa_Play = round(air_epa / pass_plays, 3), 
         YAC_EPA_Play = round(yac_epa / pass_plays, 3),
         Total_Completed_EPA = Air_Epa_Play + YAC_EPA_Play) %>%
  slice(-1) %>% 
  arrange(-EPA_Play) %>% 
  filter(pass_plays >= 80) %>%
  select(pass_location, Air_Epa_Play, YAC_EPA_Play, Total_Completed_EPA) 

Таким образом, у меня есть только 4 столбца в моем наборе данных. Air_Epa_Play и YAC_EPA_Play суммируются в "Total_Completed_EPA".

Визуализируя это:

ggplot(pass_epa, aes(x = pass_location, y = Total_Completed_EPA, fill = ?)) +
  geom_col(position = "dodge") 

Я просто не могу заставить Air_EPA_Play и YAC_EPA_Play складываться в диаграмму для Total_Completed_EPA

1 ответ

Данные

test <- data.frame(pass_location=c('middle','left','right'), Air_Epa_Play=c(0.263,0.086,0.082), YAC_Epa_Play=c(0.434,0.439,0.442), Total_Completed=c(0.697,0.525,0.524))

  pass_location Air_Epa_Play YAC_Epa_Play Total_Completed
1        middle        0.263        0.434           0.697
2          left        0.086        0.439           0.525
3         right        0.082        0.442           0.524

Вы можете игнорировать Total_Completed столбец - select(-Total_Completed). ggplotделает суммирование / суммирование за вас, поэтому вам не нужно вычислять сумму самостоятельно. Однако,ggplot также любит данные в длинном формате (а не в широком формате), поэтому вам нужно gather()соответствующие значения (по оси Y) в один столбец. Обратите внимание, что я используюgather(..., -pass_location)чтобы игнорировать столбец группировки. Попробуйте следующее с и безfill=var. Как только вы увидите этоggplot любит длинные форматированные данные, их использование становится более интуитивным - по крайней мере, для меня.

library(tidyverse)
test %>% 
  select(-Total_Completed) %>% 
  gather(var, value, -pass_location) %>% 
  ggplot(., aes(x=pass_location, y=value, fill=var)) + 
  geom_col()
Другие вопросы по тегам