Как описано в в этом посте , стандартные столбцы ошибок должны суммироваться для правильного добавления к графику с накоплением столбцов.У меня много групп (подмножество данных включено ниже), что делает ручной подход непосильным.В связанном вопросе кажется, что более простой вариант может быть выполнен в dplyr
с cumsum()
, но при имплантации с моими данными все еще неправильно корректирует вертикальные полосы ошибок.
При включенном ниже Dat
я попытался реализовать код из предыдущих постов следующим образом:
Dat <- Dat %>%
group_by(Group) %>%
mutate(Upper = cumsum(MeanReSc) + SD/sum(MeanReSc),
Lower = cumsum(MeanReSc) - SD/sum(MeanReSc)) %>%
as.data.frame()
ggplot(Dat, aes(x=Group, y=MeanReSc, fill=MigStratFact)) +
geom_bar(stat="identity") +
geom_errorbar(aes(ymin = Lower, ymax = Upper), width = .2, col = "black") +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
![enter image description here](https://i.stack.imgur.com/5PK0s.png)
Пока работает коддля некоторых групп (например, BBB
) я не смог побеспокоить выстрел, потому что он не работает на всех MigStratFact
на всех Group
.Любые предложения будут высоко ценится.
Dat <- structure(list(MigStratFact = structure(c(3L, 2L, 4L, 1L, 4L,
3L, 2L, 1L, 2L, 1L, 3L, 1L, 2L, 4L, 2L, 3L, 1L, 2L, 1L, 3L, 1L,
2L, 4L, 3L), .Label = c("Resident", "ShortDist", "MidDist", "LongDist"
), class = "factor"), SD = c(0, 0.0263523138347365, 0.0241522945769824,
0.0394405318873308, 0.0198614530574739, 0.0256410256410256, 0.032433617027368,
0.024325212770526, 0.0354998513446837, 0.0354998513446838, 0.0189196099326313,
0.0173063732746296, 0.032433617027368, 0.0289318781178922, 0.0547246897356821,
0.0416666666666667, 0.0547246897356821, 0, 0.0517549169506766,
0.0737864787372622, 0.0199422915506114, 0.0199422915506114, 0.0139566967430898,
0.0139566967430898), MeanReSc = c(0.1, 0.175, 0.215, 0.51, 0.0923076923076923,
0.269230769230769, 0.284615384615385, 0.353846153846154, 0.0869565217391304,
0.91304347826087, 0.0743589743589744, 0.197435897435897, 0.728205128205128,
0.0769230769230769, 0.116923076923077, 0.246153846153846, 0.56,
0.097323600973236, 0.1338199513382, 0.768856447688564, 0.159459459459459,
0.191891891891892, 0.286486486486487, 0.362162162162162), Group = c("AAA",
"AAA", "AAA", "AAA", "BBB", "BBB", "BBB", "BBB", "CCC", "CCC",
"DDD", "DDD", "DDD", "EEE", "EEE", "EEE", "EEE", "FFF", "FFF",
"FFF", "GGG", "GGG", "GGG", "GGG")), row.names = c(NA, -24L), class = "data.frame")