Выровнять по вертикали столбцы ошибок с групповыми значениями в сложенном `geom_bar ()` - PullRequest
0 голосов
/ 18 сентября 2018

Как описано в в этом посте , стандартные столбцы ошибок должны суммироваться для правильного добавления к графику с накоплением столбцов.У меня много групп (подмножество данных включено ниже), что делает ручной подход непосильным.В связанном вопросе кажется, что более простой вариант может быть выполнен в 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

Пока работает коддля некоторых групп (например, 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...