Как создать гистограмму с вторичной сгруппированной осью X в R? - PullRequest
3 голосов
/ 03 апреля 2020

Я пытаюсь воссоздать следующую гистограмму, используя ggplot в R, но пока мне не повезло (пожалуйста, игнорируйте белую линию, мне пришлось вычеркнуть точные данные):

enter image description here

У меня есть данные, упорядоченные следующим образом, что я считаю целесообразным:

figure_1 <- tribble(
          ~"ResponseOption", ~"StimuliFormat", ~"rfg", ~"emmean", ~"SE",
          "RF_Ratings", "Picture", "Recollection", 2, 0.03,
          "RFBG", "Picture", "Recollection", 1, 0.03,
          "RFG", "Picture", "Recollection", 7, 0.03,
          "RF_Ratings", "Word", "Recollection", 04, 0.03,
          "RFBG", "Word", "Recollection", 3, 0.03,
          "RFG", "Word", "Recollection", 5, 0.03,
          "RF_Ratings", "Picture", "Familiarity", 2, 0.03,
          "RFBG", "Picture", "Familiarity", 1, 0.03,
          "RFG", "Picture", "Familiarity", 7, 0.03,
          "RF_Ratings", "Word", "Familiarity", 04, 0.03,
          "RFBG", "Word", "Familiarity", 3, 0.03,
          "RFG", "Word", "Familiarity", 5, 0.03,
          "RF_Ratings", "Picture", "Guessing", 2, 0.03,
          "RFBG", "Picture", "Guessing", 1, 0.03,
          "RFG", "Picture", "Guessing", 7, 0.03,
          "RF_Ratings", "Word", "Guessing", 04, 0.03,
          "RFBG", "Word", "Guessing", 3, 0.03,
          "RFG", "Word", "Guessing", 5, 0.03)

, но я не знаю, как иметь 2 группирующие переменные на оси х (слова / картинки + RFG / RFBG / RFRatings). Я мог бы сделать 3 отдельных столбчатых диаграммы и каким-то образом (?) Соединить их вместе, но я искал более элегантное решение, в котором я мог бы ввести две переменные группировки по оси X в ggplot.

Любая помощь или руководство будет оценено!

1 Ответ

3 голосов
/ 03 апреля 2020

Используя facet_wrap, вы в конечном итоге можете получить аналогичный график, передав метки фасетов внизу с помощью аргумента strip.position и добавив их за пределы области графика, используя strip.placement = "outside":

ggplot(figure_1, aes(x = StimuliFormat, y = emmean, fill = rfg))+
  geom_col(position = position_dodge())+
  geom_errorbar(aes(ymin = emmean-SE, ymax = emmean+SE), width  =0.2, position = position_dodge(0.9))+
  facet_wrap(~ResponseOption, strip.position = "bottom")+
  theme_classic()+
  theme(strip.placement = "outside")+
  labs(x = "", y = "Proportion of hits")

enter image description here

Это отвечает на ваш вопрос?

...