如何在同一图中创建两个ggplot箱图?

时间:2019-01-22 11:38:00

标签: r ggplot2 boxplot

我在R中有一个数据集,其中包括6个定量变量和另一个二进制变量。我的目标是为每个定量变量创建一个箱形图,比较该变量的值与二进制变量的两个级别,我希望使用ggplot将6张图像放入R中的单个图形。

请考虑以下示例,以显示我的意思。到目前为止,我知道如何使用R中的默认“ boxplot”函数解决此问题:

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 :(得分:2)

这是您需要的吗?我认为, 最好用“ id”代替 编辑:最终答案

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

原始:

答案::如果要用a填充,则:

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()