GGPlot-Фасетная столбчатая диаграмма

#r #ggplot2 #facet

#r #ggplot2 #фасет

Вопрос:

Я борюсь с заданием, которое задает нам следующее:

у нас есть два набора данных с идентификатором вопросов как наблюдения и ответом как переменной для 2 групп

 First set
   True False
Q1  30    20
Q2  25    25

Second set set
   True False
Q1  30    20
Q2  25    25
  

меня просят создать диаграмму фасетов с gg plot, в которой ответы одной группы на параллельные диаграммы сопоставляются с ответами другой группы для каждого вопроса, поэтому по каждому вопросу у вас есть диаграмма с одной полосой для каждого типа ответа, причем обе группы имеют разные цвета.

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

Ответ №1:

Я бы предложил tidyverse подход, использующий ggplot2 , как упоминалось. Сначала у вас должны быть данные в следующей структуре (я добавляю dput() версию, чтобы сделать пример воспроизводимым):

 #Data
df <- structure(list(True = c(30L, 25L, 30L, 25L), False = c(20L, 25L, 
20L, 25L), Group = c("Group 1", "Group 1", "Group 2", "Group 2"
), Question = c("Q1", "Q2", "Q1", "Q2")), row.names = c(NA, -4L
), class = "data.frame")
  

Вы можете использовать rbind() или bind_rows() из dplyr для привязки включенных вами данных. Затем необходимо разделить группы следующим образом:

   True False   Group Question
1   30    20 Group 1       Q1
2   25    25 Group 1       Q2
3   30    20 Group 2       Q1
4   25    25 Group 2       Q2
  

С помощью этого вы можете нарисовать график с помощью этого кода, изменив форму данных и включив нужные элементы в график в виде столбиков ( geom_bar() ), и вы можете фасетировать или разбивать на некоторую переменную с помощью facet_wrap() :

 df %>% pivot_longer(cols = -c(Group,Question)) %>%
  ggplot(aes(x=Group,y=value,fill=Question)) 
  geom_bar(stat = 'identity',position = position_dodge()) 
  facet_wrap(.~name)
  

Вывод:

введите описание изображения здесь