如何将其他参数传递给函数内生成的ggplot?

时间:2012-12-12 02:11:39

标签: r ggplot2

我写了许多包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)

产生这个:

A test plot

如何推广此功能,以便有人可以为此绘图传递其他或不同的选项(特别是在通用绘图的情况下)?

如果我的功能被定义为:

f <- function(df, ...)

我如何将这些内容传递给ggplot来电?

1 个答案:

答案 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)