使用ggplot 2在同一图上为yes / no变量创建两个单独的Boxplots

时间:2018-06-11 15:30:35

标签: r ggplot2 data-science

我正在尝试创建一个boxplot,其中x轴上有一个二进制1/2变量。当我使用ggplot创建我的boxplot和循环时,我只得到一个以1.5为中心的大盒子图,而我想要一个1的盒子图和2的箱图。我是新手,所以任何帮助和额外的阅读将不胜感激。下面是代码。

myboxplot <- function(mydata=ivf_dataset, myexposure, myoutcome  )
  {
  bp <- ggplot(mydata, aes_(as.name(myexposure), as.name(myoutcome))) +
     geom_boxplot() 
      print(bp)
  }
 myboxplot(myexposure = "ART_CURRENT", myoutcome = "H19_DMR_mean")

2 个答案:

答案 0 :(得分:0)

myboxplot <- function(mydata=ivf_dataset, myexposure, myoutcome  )
  {
  bp <- ggplot(mydata, aes_(myexposure, as.factor(myoutcome))) +
     geom_boxplot() 
      print(bp)
  }
 myboxplot(myexposure = "ART_CURRENT", myoutcome = "H19_DMR_mean")

如果你想根据变量的值绘制多个boxplot,那么该变量必须是一个因子!

答案 1 :(得分:0)

以下将做你想要的。
诀窍是get要绘制的变量的值,因为您将它们作为字符串传递给函数。

library(ggplot2)

set.seed(7153)
ivf_dataset <- data.frame(
  ART_CURRENT = sample.int(2, 100, TRUE),
  H19_DMR_mean = rnorm(100)
)

myboxplot <- function(mydata=ivf_dataset, myexposure, myoutcome  ){
  bp <- ggplot(mydata, aes(x = as.factor(get(myexposure)), y = get(myoutcome))) +
    geom_boxplot() 
  print(bp)
}
myboxplot(myexposure = "ART_CURRENT", myoutcome = "H19_DMR_mean")

enter image description here