Каковы значения aes () при создании boxplot с использованием пакета ggplot? - PullRequest
1 голос
/ 02 марта 2020

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

Это моя самая основа c код, который я пытаюсь использовать, но я не знаю свои значения x и y?

ggplot(data, aes(x,y)) + geom_boxplot()

Итак, мои значения y - это коэффициенты Пирсона, которые равны 0-1, но я изо всех сил пытаясь поместить это в качестве диапазона. Тогда я просто запутался, потому что мои значения х - это просто 4 разных условия. Должен ли я использовать вектор? например, c(drug 6hr, control, drug 24hr, control)

Я успешно создал базовый c коробочный график, используя boxplot(), но я использую ggplot2, потому что я хочу показать каждое отдельное значение на графике, используя jitter, который у меня тоже не получился использовать.

Извините, я использую R только около 6 месяцев! Пытаюсь узнать как можно больше.

Мои данные:

drug 6hr, control, drug 24hr, control
0.876   0.707   0.709   0.521
0.084   0.275   0.468   0.795
0.911   0.985   0.565   0.150
0.503   0.584   0.693   0.766
0.363   0.102   0.775   0.640
0.219   0.888   0.724   0.516
0.041   0.277   0.877   0.216
0.206   0.974   0.771   0.434
0.787   0.725   0.671   0.916
0.896   0.873   0.443   0.693
0.396   0.641   0.525   0.471
0.250   0.184   0.467   0.537
0.094   0.453   0.641   0.910
0.750   0.748   0.634   0.007
0.026   0.263   0.069   0.725
0.109           0.227   0.535
0.780           0.811   0.241
0.710           0.568   0.029
0.676           0.114   0.237
0.610           0.260   0.241
0.170           0.728   0.405
0.025           0.815   0.914
0.022           0.329   0.766
0.039           0.714
0.034           0.096
0.402           0.988
0.649
0.564
0.190
0.844
0.920
0.744
0.871
0.565

1 Ответ

2 голосов
/ 02 марта 2020

Вам нужно преобразовать ваш фрейм данных в более длинный формат, и тогда вам будет проще забыть о boxplot с помощью ggplot2.

Здесь я использую функцию pivot_longer из * 1006. * пакет для преобразования ваших данных в два столбца, первый из которых является именем условия, а второй содержит значения:

library(tidyr)
library(dplyr)
DF %>% pivot_longer(everything(), names_to = "var",values_to = "values") 

# A tibble: 136 x 2
   var        values
   <chr>       <dbl>
 1 drug_6hr    0.876
 2 Control_6   0.707
 3 drug_24hr   0.709
 4 Control_24  0.521
 5 drug_6hr    0.084
 6 Control_6   0.275
 7 drug_24hr   0.468
 8 Control_24  0.795
 9 drug_6hr    0.911
10 Control_6   0.985
# … with 126 more rows

Затем вы можете добавить графическую c часть в канал ( последовательность%>%), определив ваш фрейм данных в ggplot с различными aes аргументами и используя функции geom_boxplot и geom_jitter:

library(tidyr)
library(dplyr)
library(ggplot2)
DF %>% pivot_longer(everything(), names_to = "var",values_to = "values") %>%
  ggplot(aes(x = var, y = values, fill = var, color = var))+
  geom_boxplot(alpha = 0.2)+
  geom_jitter()

Либо удалите предупреждающие сообщения на основе При наличии значений NA вы можете отфильтровать значения NA, добавив функцию filter между pivot_longer и ggplot:

DF %>% pivot_longer(everything(), names_to = "var",values_to = "values") %>%
  filter(!is.na(values)) %>%
  ggplot(aes(x = var, y = values, fill = var, color = var))+
  geom_boxplot(alpha = 0.2)+
  geom_jitter()

enter image description here

Отвечает ли он на ваш вопрос?

Воспроизводимый пример

Я отредактировал ваш пример, чтобы сделать его лучше для чтения в R. Я также изменяю имена, как указано @akrun:

structure(list(drug_6hr = c(0.876, 0.084, 0.911, 0.503, 0.363, 
0.219, 0.041, 0.206, 0.787, 0.896, 0.396, 0.25, 0.094, 0.75, 
0.026, 0.109, 0.78, 0.71, 0.676, 0.61, 0.17, 0.025, 0.022, 0.039, 
0.034, 0.402, 0.649, 0.564, 0.19, 0.844, 0.92, 0.744, 0.871, 
0.565), Control_6 = c(0.707, 0.275, 0.985, 0.584, 0.102, 0.888, 
0.277, 0.974, 0.725, 0.873, 0.641, 0.184, 0.453, 0.748, 0.263, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA), drug_24hr = c(0.709, 0.468, 0.565, 0.693, 0.775, 
0.724, 0.877, 0.771, 0.671, 0.443, 0.525, 0.467, 0.641, 0.634, 
0.069, 0.227, 0.811, 0.568, 0.114, 0.26, 0.728, 0.815, 0.329, 
0.714, 0.096, 0.988, NA, NA, NA, NA, NA, NA, NA, NA), Control_24 = c(0.521, 
0.795, 0.15, 0.766, 0.64, 0.516, 0.216, 0.434, 0.916, 0.693, 
0.471, 0.537, 0.91, 0.007, 0.725, 0.535, 0.241, 0.029, 0.237, 
0.241, 0.405, 0.914, 0.766, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA)), row.names = c(NA, -34L), class = c("data.table", "data.frame"
))
...