【问题标题】:Creating two separate Boxplots for yes/no variable on same plot using ggplot 2使用ggplot 2在同一图上为是/否变量创建两个单独的箱线图
【发布时间】:2018-06-11 15:30:34
【问题描述】:

我正在尝试创建一个箱线图,其中 x 轴上有一个二进制 1/2 变量。当我使用 ggplot 创建我的箱线图和循环时,我只得到一个以 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")

【问题讨论】:

标签: r ggplot2 data-science


【解决方案1】:

以下内容将满足您的需求。
诀窍是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")

【讨论】:

  • 谢谢,这确实有效,但是您对“get”功能的工作原理有什么好的了解吗?
  • @DillonLloyd 嗯,有help("get") 和源代码,R 是开源的。但我必须承认我从未读过它(来源)。
【解决方案2】:
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")

如果要根据变量的值绘制多个箱线图,则该变量必须是一个因素!

【讨论】:

  • 感谢您的回复。就像我说的那样,我是新手,所以为了使变量成为一个因素,我需要通过修改我的数据集来做到这一点,还是有一种简单的方法可以在函数中做到这一点?
  • 检查我的答案
猜你喜欢
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 2021-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多