我写了许多包generic
图是ggplot2
的包。与其他R函数调用不同,ggplot
调用是分层的,因此最终会有几个选项(由+
符号分隔)以获得看起来恰到好处的情节。但是,我不希望有人通过我预先定义的选项受到影响,并希望他们能够自定义它而无需从头开始重新编写我的函数。我该如何做到这一点?
使用传统函数,我可以使用three dot
运算符传递可选参数。 ggplot
似乎更难。
可重复的示例
f <- function(df) {
custom_plot <- ggplot(df, aes(mpg, disp, color = gear)) +
geom_point(size = 3) +
theme(panel.background = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), panel.border = element_blank(),
axis.line = element_line(colour = "black"))
return(custom_plot)
}
生成情节
f(mtcars)
产生这个:
如何推广此功能,以便有人可以为此绘图传递其他或不同的选项(特别是在通用绘图的情况下)?
如果我的功能被定义为:
f <- function(df, ...)
我如何将这些内容传递给ggplot
来电?
答案 0 :(得分:6)
你的函数返回的图应该对任何知道ggplot的人都是可修改的 - 除非你能想到使用+
无法修复的特定情况,一个更好的解决办法可能就是尽量少做主题和尽可能定制,让人们自己添加图。
所有这些自定义都可以正常工作,例如:
mtplot <- f(mtcars)
mtplot + theme_bw()
mtplot + scale_colour_gradientn(colours=c("red", "purple"))
mtplot + labs(title="Add a title!")
mtplot + geom_point(size=5)