我有一个使用ggplot的函数。我想将其传递给变量以用于fill
美观,或者在不传递任何内容时使用其他颜色。
if / else语句对下面的函数执行此操作,但是我的实际函数稍微复杂一些,并且具有一些if / else分支,所以我想将它们最小化。
是否可以将geom_bar()
的默认填充设置为"blue"
,但是如果我传递fill
的美感,可以将其替换吗?
或者,我正在考虑基于传递给函数的参数创建要传递给geom_bar()
的参数列表,并使用!!!
对其进行拼接。尽管我还没有真正了解tidyeval / quasiquotation,所以我不太了解那是怎么回事。
我也愿意接受其他解决方案。
library(ggplot2)
plotter <- function(x = mtcars, fill = NULL) {
p <- ggplot(x, aes(factor(cyl)))
# I don't like this if/else statement
if (!is.null(fill)) {
p <- p + geom_bar(mapping = aes_string(group = fill, fill = fill))
} else {
p <- p + geom_bar(fill = "blue")
}
p
}
plotter()
plotter(fill = "as.factor(gear)")