Где-то я делаю очень простую ошибку. Спасибо, что указали, где эта ошибка происходит...
Я хотел бы создать график скрипки с наложением доверительных интервалов и групповых средних. Очень похоже на пример в этот потрясающий новый пакет.
Общий сюжет скрипки без каких-либо CI работает нормально:
p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +
geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean,
fatten=2, width=.5)
Мои проблемы включают в себя доверительные интервалы.
Я начинаю с создания необходимой сводной статистики:
errbar_lims <- group_by(diamonds, cut) %>%
summarize(mean=mean(price), se=sd(price)/sqrt(n()),
upper=mean+(2*se), lower=mean-(2*se))
Потом подумал добавить в сюжет с geom_errorbar
:
p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +
geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean,
fatten=2, width=.5) +
geom_errorbar(aes(x= ymax=errbar_lims$upper, ymin=errbar_lims$lower),
stat='identity', width=.25)
Но ошибка ggplot продолжает информировать меня о том, что я сопоставляю эстетику одной группы вместо 5 групп, которые я пытаюсь построить.
Возможно, моя ошибка в том, как я установил отображение в самом начале?
ОБНОВИТЬ
После просмотра нескольких комментариев после первоначальной публикации полный сценарий теперь выглядит следующим образом:
errbar_lims <- group_by(diamonds, cut) %>%
summarize(mean=mean(price), se=sd(price)/sqrt(n()),
upper=mean+(2*se), lower=mean-(2*se))
p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +
geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean,
fatten=2, width=.5) +
geom_errorbar(aes(x = cut, ymin = lower, ymax = upper), errbar_lims, inherit = FALSE)
Тем не менее, ошибка сохраняется:
Error in FUN(X[[i]], ...) : object 'price' not found
aes
с$lower
. Передайте данные вgeom_errorbar
в качестве аргумента и укажите значения, как в любом другом слое геометрии. Что-то вроде этого:geom_errorbar(aes(ymin = lower, ymax = upper), errbar_lims)
- person pogibas   schedule 03.09.2018Error in FUN(X[[i]], ...) : object 'price' not found
Есть ли шанс, что предложенные вами аргументы не работают из-за того, что данные, содержащие информацию CI, находятся в отдельном объекте data.frame (errbar_lims), чем остальные (ромбы)? - person Devon O'Rourke   schedule 03.09.2018x= ymax=errbar_lims$upper
недействительный код R. - person Rui Barradas   schedule 03.09.2018price
на основе верхнего уровняaes(y = price)
. Добавлениеinherit.aes = FALSE
отменяет это. Но вам нужно будет указатьx = cut
и в этом случае:geom_errorbar(aes(x = cut, ymin = lower, ymax = upper), errbar_lims, inherit = FALSE)
- person Z.Lin   schedule 03.09.2018inherit = FALSE
наinherit.aes=FALSE
- person Devon O'Rourke   schedule 03.09.2018