Как создать отдельное среднее значение, панель ошибок поверх графика рассеяния и как сделать горизонтальную среднюю линию? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу сделать position_dodged scatter plot со средними значениями, представленными в виде горизонтальных линий (с ошибками).

У меня проблемы position_dodging среднее значение и столбцы ошибок с использованием stat_summary() и отображение среднего значения в виде горизонтальной линии.

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

download.file(url="https://ndownloader.figshare.com/files/2292169",
              destfile = "~/portal_data_joined.csv")

surveys <- read.csv

surveys_cln <- surveys %>% filter(sex=="F"|sex=="M")

ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, color=sex))+
  geom_jitter(alpha=.6, position = position_dodge(.5))+
  stat_summary(fun.data = mean_sdl, fun.args = list(mult=1), 
               geom="errorbar", color="red", width=.5, position=position_dodge2(width=.9))
  stat_summary(fun.y=mean, geom="errorbar", color="red", width = .75, linetype = "dashed", position=position_dodge(9))

У меня только один mean+errorbar на условие, но не для обеих групп условия. Если бы я мог показать mean+errorbar для обоих полов отдельно, это было бы здорово.

Вот изображение

link to the resulting image

Привет! Спасибо за помощь. Вот обновленный код:

  ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, fill=as.factor(sex), shape=as.factor(sex)))+

  geom_jitter(alpha=.6, position = position_dodge(.5))+
  stat_summary(aes(group = sex), fun.data = mean_sdl, fun.args = list(mult=1), 
  geom="errorbar", width=.5, position=position_dodge2(width=.9))+
  stat_summary(fun.y=mean, geom="errorbar", width = .75, linetype = "dotted", position=position_dodge(9))+

  scale_fill_manual(values=c("#006D2C","#DEEBF7"))+
  #scale_fill_brewer(palette="Paired")+

  theme_bw()+
  #theme(text=element_text(size=30))+
  theme(#legend.position = "none",
    plot.title = element_blank(),
    panel.grid.major.x = element_blank(),
    axis.title.x = element_text(),
    axis.text.x = element_text(),
    axis.ticks = element_blank(),
    axis.text.y = element_text(size=rel(.7)))

Не могли бы вы помочь мне с цветами ? Я хочу F = # 000000 и M = # 73000a.

Кроме того, есть ли способ визуализировать среднее в виде горизонтальной полосы между панелями ошибок?

Вот вторая попытка

link to the resulting image

Еще раз спасибо!

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Хотя ответ @ abichat является полностью правильным, вы также можете просто удалить аргумент color="red", который заставляет ggplot не группировать ваши данные.

Таким образом, на вашем графике будут отображаться панели ошибок схорошего цвета (возможно, увеличьте их толщину, чтобы улучшить читаемость).

1 голос
/ 25 апреля 2019

Вам необходимо добавить aes(group = sex) в ваш geom_*().

ggplot(data = surveys_cln,
       mapping = aes(x = species_id, y = weight, color = sex)) +
  geom_jitter(alpha = .6, position = position_dodge(.5)) +
  stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), 
               aes(group = sex), 
               geom = "errorbar", color = "red", width = .5, 
               position = position_dodge2(width = .9))

enter image description here

...