Ответ 1
Это то, что вы ищете?
library(ggplot2)
x <- factor(rep(1:10, 100))
y <- rnorm(1000)
df <- data.frame(x=x, y=y)
ggplot(df, aes(x=x, y=y)) +
geom_boxplot() +
stat_summary(fun.y=mean, geom="line", aes(group=1)) +
stat_summary(fun.y=mean, geom="point")
Обновление:
Некоторые уточнения об установке группы = 1: Я думаю, что я нашел объяснение в книге Хэдли Уикхема " ggplot2: Элегантная графика для анализа данных", На стр. 51 он пишет:
Различные группы на разных уровнях.
Иногда мы хотим составить резюме основанные на разных уровнях агрегация. Различные слои могут имеют различную групповую эстетику, поэтому что некоторые отображают индивидуальный уровень данных, в то время как другие большие группы.
Основываясь на предыдущем примере, предположим, что мы хотим добавить один гладкий линии к сюжету, только что созданному, основанному на веках и высотах всех мальчики. Если мы используем одну и ту же группировку для гладкое, что мы использовали для линии, мы получим первый график на рисунке 4.4.
p + geom_smooth (aes (group = Subject), method = "lm", se = F)
Это не то, что мы хотели; у нас есть непреднамеренно добавила сглаженную линию для каждого мальчика. Этот новый слой нуждается в различная группа эстетическая, группа = 1, так что новая строка будет основана на все данные, как показано на втором сюжет на рисунке. Измененный слой выглядит следующим образом:
p + geom_smooth (aes (group = 1), method = "lm", size = 2, se = F)
[...] Использование aes (group = 1) в гладкий слой подходит для одной линии лучше всего подходят всем мальчикам ".