2012-08-10 19 views
3

我与GGPLOT2为主题的全局变量:参数添加到主题GGPLOT2

cPlotOpts <- opts (axis.text.x = theme_text (size=10, colour="grey50"), axis.text.y = theme_text (… 

,我想一个参数添加到它后面的代码,但不修改那些已经确定,所以这

axis.text.x = theme_text (size=10, colour="grey50", angle=90) 

我如何添加这个参数(angle)已经定义好的theme_text,而无需显式地重复设置sizecolour

[为了更清楚的第一个回答后可进行编辑。]

回答

2

我认为最简单的方法是只用一个函数。

cPlotOpts <- function(size = 10, colour = "grey50", ...) { 
    opts(axis.text.x = theme_text (size=size, colour=colour, ...)) 
} 

然后在以后添加参数,简单地说:

cPlotOpts(angle=90) 

这将产生:

cPlotOpts(angle=90) 
$axis.text.x 
theme_text(colour = colour, size = size, angle = 90) 

attr(,"class") 
[1] "options" 

如果您不希望它编辑,只需使用cPlotOpts()。是否可以接受?

+0

这是一个非常好的解决方案,我相信我会在未来找到它的用处,谢谢。但是,对于我现在的问题,这并不是很好。我应该提到cPlotOpts实际上包含了很多针对不同主题(文本,标题,轴和c)的设置。将它们全部更改为函数参数将是不切实际的,此外,我不会有简单的方法来决定哪些参数转到文本主题,哪些参数用于标题主题等等。 – 2012-08-11 09:24:36

+0

我必须考虑是否有另一种好方法来做你想做的事。您肯定可以让该函数为该角度提供一个参数(即,您不需要将所有选项都更改为函数参数,而只需要您可以灵活更改的参数)。我也会探索'+'和'%+%'操作符。一个人可以做你想做的事。否则,我认为解决方案将涉及一些函数,可以检查是否使用了参数,如果不是,则以某种方式修改现有对象以包含它,这从我的头顶开始似乎很平凡,但也许别人知道。 – Joshua 2012-08-12 03:37:13