Как создать два боксплота ggplot на одной фигуре? - PullRequest
0 голосов
/ 22 января 2019

У меня есть набор данных в R, который включает 6 количественных переменных и еще одну переменную, которая является двоичной. Моя цель состоит в том, чтобы для каждой количественной переменной создать блок-график, который сравнивает значения этой переменной для двух уровней двоичной переменной, и я хочу, чтобы 6 изображений были помещены в одну цифру в R с помощью ggplot.

Рассмотрим следующий пример, чтобы показать, что я говорю. До сих пор я знаю, как решить эту проблему с помощью функции "boxplot" по умолчанию в R:

X = data.frame(a = c(rep("T", 5), rep("F", 5)), 
               b = rnorm(10), 
               c = runif(10))

par(mfrow = c(1, 2))
boxplot(b ~ a, data = X)
boxplot(c ~ a, data = X)

И я знаю, как создать два боксплота, которые я хочу, используя ggplot:

library(ggplot2)

ggplot(X, aes(x = a, y = b)) + 
  geom_boxplot(aes(fill = a))
ggplot(X, aes(x = a, y = c)) + 
  geom_boxplot(aes(fill = a))

Чего я не знаю, так это как отобразить два коробочных графика ggplot на одной фигуре.

1 Ответ

0 голосов
/ 22 января 2019

Это то, что вам нужно? Я думаю, что лучше заполнить "id", чем . РЕДАКТИРОВАТЬ: ФИНАЛЬНЫЙ ОТВЕТ

X %>% 
  gather("id","value",2:3) %>% 
  group_by(id) %>% 
  ggplot(aes(a,value,fill=id))+geom_boxplot()+facet_wrap(~id)

Оригинал:

ОТВЕТ: Если вы хотите заполнить, то:

X %>% 
  gather("id","value",2:3) %>% 
  group_by(id) %>% 
  ggplot(aes(id,value))+geom_boxplot(aes(fill=a))

В противном случае:

 library(tidyverse)
    X %>% 
      gather("id","value",2:3) %>% 
      group_by(id) %>% 
      ggplot(aes(a,value,fill=id))+geom_boxplot()
...