Как отобразить столбцы ошибок на графике R geom_violin - PullRequest
0 голосов
/ 03 сентября 2018

Где-то я совершаю очень простую ошибку. Спасибо, что указали, где происходит эта ошибка ...

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

Общий скрипичный сюжет без каких-либо работ КИ прекрасно:

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 групп, которые пытаюсь построить.

Возможно, моя ошибка в том, как я установил отображение в самом начале?


UPDATE

После просмотра нескольких комментариев после первоначальной публикации, полный скрипт теперь выглядит следующим образом:

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

1 Ответ

0 голосов
/ 03 сентября 2018

Применимо к тому сказочному коду на github, который вы мне тоже указали.

library(ggplot2)
View(ggplot2::diamonds)

ggstatsplot::ggbetweenstats(data = ggplot2::diamonds, x=cut, y=price, messages=FALSE)

...