我写了许多包,generic情节是一个ggplot2.一个ggplot呼叫,不像其它的R函数调用,是分层这样一个最终可能会以几种方式(通过分离+的迹象)获得剧情看恰到好处.但是,我不希望有人通过我预先定义的选项受到影响,并希望他们能够自定义它而无需从头开始重新编写我的函数.我该如何做到这一点?
使用传统函数,我可以使用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)
}
Run Code Online (Sandbox Code Playgroud)
生成情节
f(mtcars)
Run Code Online (Sandbox Code Playgroud)
产生这个:

如何推广此功能,以便某人可以将更多或不同的选项传递给此图(特别是在通用图的情况下)?
如果我的功能被定义为:
f <- function(df, ...)
Run Code Online (Sandbox Code Playgroud)
我如何将这些传递给我ggplot?
对于知道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)
Run Code Online (Sandbox Code Playgroud)