Как сделать гистограмму с помощью ggplot, которая использует несколько столбцов для оси X?

Я пытаюсь использовать несколько имен столбцов в качестве оси x в гистограмме. Таким образом, имя каждого столбца будет «фактором», а содержащиеся в нем данные — это счет для этого.

Я пробовал итерации этого:

 ggplot(aes( x = names, y = count)) + geom_bar()

Я попытался объединить значения x, которые я хочу показать, с помощью aes(c(col1, col2)), но длина эстетики не соответствует и не будет работать.

library(dplyr)
library(ggplot2)
head(dat)

  Sample Week Response_1 Response_2 Response_3 Response_4 Vaccine_Type
1      1    1        300          0       2000        100            1
2      2    1        305          0        320         15            1
3      3    1        310          0        400         35            1
4      4    1        400          1        410         35            1
5      5    1        405          0        180         35            2
6      6    1        410          2        800         75            2


 dat %>%
  group_by(Week) %>%
  ggplot(aes(c(Response_1, Response_2, Response_3, Response_4)) +
  geom_boxplot() +
  facet_grid(.~Week)

dat %>%
  group_by(Week) %>%
  ggplot(aes(Response_1, Response_2, Response_3, Response_4)) +
  geom_boxplot() +
  facet_grid(.~Week)

> Error: Aesthetics must be either length 1 or the same as the data
> (24): x

Оба они потерпели неудачу (вроде как ожидалось, основываясь на коде ошибки длины aes), но, надеюсь, вы знаете, в каком направлении я стремился, и можете помочь.

Цель состоит в том, чтобы иметь 4 отдельные группы, каждая со своим собственным блок-графиком (по 1 на каждый ответ). А также разбить их по неделям.


person Josh    schedule 07.04.2019    source источник
comment
Что-то вроде этих stackoverflow.com/a/50649629/786542 и stackoverflow.com/a/50751486/786542?   -  person Tung    schedule 07.04.2019
comment
попробуй geom_barplot(position="dodge")   -  person Ploni Almoni    schedule 07.04.2019


Ответы (1)


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

boxplot(dat[,3:6], use.cols = TRUE)

И я мог довольно легко просто отфильтровать по разным неделям и использовать mfrow для огранки. Не так информативно, как ggplot, но выполняет свою работу. Если у кого-то есть другие обходные пути, мне было бы интересно посмотреть.

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

person Josh    schedule 07.04.2019