Я хотел бы построить горизонтальную грань гранью с населением медианной этой грани.ggplot2: добавить hline с населением медианным для каждого аспекта
Я попробовал подход, не создавая фиктивную сводную таблицу с помощью следующего кода:
require(ggplot2)
dt = data.frame(gr = rep(1:2, each = 500),
id = rep(1:5, 2, each = 100),
y = c(rnorm(500, mean = 0, sd = 1), rnorm(500, mean = 1, sd = 2)))
ggplot(dt, aes(x = as.factor(id), y = y)) +
geom_boxplot() +
facet_wrap(~ gr) +
geom_hline(aes(yintercept = median(y), group = gr), colour = 'red')
Тем не менее, линия обращается к медиане всего набора данных вместо медианы отдельно для каждого фасета:
в прошлом, solution было предложено использовать
geom_line(stat = "hline", yintercept = "median")
, но оно прекращено (появляется ошибка «Нет stat, называемого StatHline»).
Другого solution предложил
geom_errorbar(aes(ymax=..y.., ymin=..y.., y = mean))
но он генерирует
Error in data.frame(y = function (x, ...) :
arguments imply differing number of rows: 0, 1000
Наконец, есть способ построить медиану путем создания dummy table с желаемой статистикой, но я хотел бы избежать.