热门改变/设置ggplot的全球尺度美学/颜色?

时间:2014-09-24 14:50:15

标签: r ggplot2 themes

我喜欢编写一个函数,它全局设置特定主题选项并缩放ggplot对象的美学,与ggthemr-package相当。

我可以使用以下代码片段修改主题选项:

sjtheme <- theme_grey() +
  theme(axis.text.x = element_text(angle=axis.angle.x, size=rel(axis.size.x), colour=axis.color.x), 
        axis.text.y = element_text(angle=axis.angle.y, size=rel(axis.size.y), colour=axis.color.y), 
        axis.title = element_text(size=rel(axis.title.size), colour=axis.title.color),
        axis.ticks = element_line(colour=axis.ticks.color),
        axis.ticks.length = unit(axis.ticks.length, "cm"),
        plot.title = element_text(size=rel(title.size), colour=title.color),
        plot.background = element_rect(colour=plot.bordercol, fill=plot.backgroundcol),
        panel.background = element_rect(colour=panel.bordercol, fill=panel.backcol),
        panel.grid.minor = element_line(colour=panel.minor.gridcol),
        panel.grid.major = element_line(colour=panel.major.gridcol))
theme_set(sjtheme)

geom默认值可以更改,例如与

update_geom_defaults('boxplot', list(fill = geom.colors, alpha = geom.alpha, outlier.colour = geom.colors))

现在这两个都很好用,所以每当我创建一个ggplot对象时,都会应用我的主题和geom选项。

但是如何使用比例尺进行此操作,因此条形/点/线条颜色也会获得新的默认值?

ggthemr-package中有一个解决方案:https://github.com/cttobin/ggthemr/blob/master/R/theme_scales.R

但是,此方法会修改全局环境,这会违反CRAN提交策略。我通过网络搜索发现的所有建议都不起作用,例如“set_scale_defaults”(已在较新的ggplot版本中删除)或this postingthis posting

那么,是否有可能更改不会改变用户全局环境的比例默认值?

1 个答案:

答案 0 :(得分:2)

您可以简单地重新定义相关比例,

scale_colour_discrete <- function(...) 
  scale_colour_brewer(..., palette="Set1")