Я пытался нанести столбцы ошибок на график в ggplot2 с разным количеством баров в группе.Мне бы хотелось:
- Фиксированная ширина баров независимо от количества баров в группе
- Ошибка баров с одинаковой шириной усов, выровненных по соответствующим брускам
Это должно быть довольно стандартно, но я борюсь с ошибками, поскольку настройки в position_dodge()
и position_dodge2()
не кажутся такими простыми, как примеры в geom_crossbar()
и position_dodge
документация.
Моя ближайшая попытка:
df <- data.frame(
mean = 2:8,
loc = c(rep(1, 4), 2, rep(3, 2)),
# spcs = c(1:4, 1, 1:2),
spcs = c(1:4, 1, 2, 4) # Updated on 29 Dec 2018 in response to @Roman Luštrik's comment
)
ggplot(aes(x = factor(loc), y = mean, fill = factor(spcs)), data = df) +
geom_col(position = position_dodge2(preserve = "single")) +
geom_errorbar(
aes(ymin = mean - 0.2, ymax = mean + 0.2),
position = position_dodge(width = 0.9),
width = 0.2
)
Однако ни одна из полос ошибок не была выровнена с полосами(Loc 3), и у них не было такой же ширины усов, как я хотел (Loc 2 и 3).
Я гуглил и нашел несколько подобных вопросов здесь, но не совсем мой случай.Поэтому я был бы признателен за решение с небольшим объяснением того, почему моя попытка не удалась.
пс.Я знаю, если бы я facet_grid()
на loc
и установил scales = "free_x", space = "free_x"
, я бы получил близкую альтернативу, но я бы не стал использовать здесь фасет.Спасибо!