Подтвердить что ты не робот

Соединение соединяется с ящиком с линией (ggplot2)

У меня есть boxplot, показывающий несколько ящиков. Я хочу подключить среднее значение для каждого окна вместе с линией. Коробка не показывает среднее значение по умолчанию, вместо этого средняя линия указывает только медианную. Я попробовал

ggplot(data, aes(x=xData, y=yData, group=g)) 
    + geom_boxplot() 
    + stat_summary(fun.y=mean, geom="line")

Это не работает.

Интересно, что делать

stat_summary(fun.y=mean, geom="point") 

рисует медианную точку в каждом поле. Почему "линия" не работает?

Что-то вроде этого, но используя ggplot2, http://www.aliquote.org/articles/tech/RMB/c4_sols/plot45.png

4b9b3361

Ответ 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) в гладкий слой подходит для одной линии лучше всего подходят всем мальчикам ".