我试图创建一个在函数主体中包含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轴计数的预期条形图根本不会出现。
答案 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")