Гистограмма с накоплением без заполнения?
У меня все настроено, и я просто пытаюсь показать гистограмму с накоплением.
Моя ось 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()