r - ggplot2:如果未提供美学,则默认填充
问题描述
我有一个使用 ggplot 的函数。我想将它传递给一个变量以用于fill
美学,或者当我不传递任何东西时使用不同的颜色。
if/else 语句为下面的函数执行此操作,但我的实际函数有点复杂,并且有一些 if/else 分支,所以我想将它们最小化。
是否可以为 to 设置默认填充geom_bar()
,"blue"
但如果我传入fill
美学,是否会被覆盖?
或者,我正在考虑根据传递给我的函数的参数创建一个要传递给的参数列表geom_bar()
,并将其拼接到 using 中!!!
。不过,我还没有真正了解 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)")
解决方案
推荐阅读
- java - 在 Java 中创建对象时从孩子的类属性设置类属性
- python - 无法使用 Oauth2.0 对 LinkedIn Python API 客户端进行身份验证
- reactjs - ("node_modules/next/types/index")' 没有兼容的调用签名
- arrays - 将这组对象设置为数组时出现问题
- r - t在0到5之间绘制f(α) = (α2 + 1)^(0.5)的曲线,使用MML标注图形
- javascript - Mini-Max Sum - 使用 JavaScript 返回两个(或更多)间隔数字
- sql - 调用用户定义函数
- button - 带有标题栏(和按钮)的 PyGame 全屏
- ubuntu-16.04 - 为什么控制台中的节点名称与 .launch 文件中的不同?
- postgresql - 从 PostGIS 点获取纬度/经度