创建包含ggplot的函数,并在每次调用时产生两个绘图输出

时间:2019-06-06 18:59:24

标签: r function ggplot2

我试图创建一个在函数主体中包含ggplot的函数,并且每次调用产生两个或多个图表。

我采用了仅在生成一个图的情况下对我的功能进行初始测试的方法,并且该方法一直有效。我在函数之外调用了我的图,以确保我正确地对其进行编码,并且它们可以独立工作。以下代码仅生成一个将y轴缩放为1的条形图,没有错误:

library(tidyverse)

cat_plots <- function(dat, var1, var2){

  nums <- ggplot(dat) + geom_bar(aes_string(var1, fill = var2)) 

  props <- ggplot(dat) + 
    geom_bar(aes_string(var1, fill = var2), position = "fill")

  nums
  props
}

cat_plots(diamonds, "cut", "clarity")

预期结果是nums的图和props的图-我试图同时生成两个具有原始计数和比例的图,以便于在两者之间进行比较。我没有返回错误。我只得到最后一个小图,只显示比例。沿y轴计数的预期条形图根本不会出现。

1 个答案:

答案 0 :(得分:1)

这样的解决方案对您有用吗? grid.arrange()是一次轻松打印两个图的简便方法。

library(tidyverse)

cat_plots <- function(dat, var1, var2){

  nums <- ggplot(dat) + geom_bar(aes_string(var1, fill = var2)) 

  props <- ggplot(dat) + 
    geom_bar(aes_string(var1, fill = var2), position = "fill")

  gridExtra::grid.arrange(nums, props, ncol = 1)
}

cat_plots(diamonds, "cut", "clarity")

enter image description here