如何为ggplot2全局设置主题?

时间:2017-01-18 10:39:01

标签: r ggplot2

我创建了一个包含大量函数的包,可以生成ggplot图。

一开始,我使用了所有情节功能(灰色主题)的默认主题,但后来我发现黑白主题更加令人愉悦,并使用该主题开发了我最新的情节功能。

有没有办法全局设置ggplot2主题,即在一个地方,而不必在每次找到我想要应用于我所有情节的新主题时修改我的所有绘图功能?

3 个答案:

答案 0 :(得分:37)

在这里,你应该再次附上包裹

 library(ggplot2); theme_set(theme_bw())

答案 1 :(得分:9)

我的目的是设置

th <- theme()

在我的脚本顶部,然后将其包含在所有ggplots中。它需要在任何绘图特定主题之前添加,否则它将覆盖它们。

df <- data.frame(x = rnorm(100))
ggplot(df, aes(x = x)) +
  geom_histogram() + 
  th +
  theme(panel.grid.major = element_line(colour = "pink"))

稍后,您可以将th更改为其他主题

修改

hrbrmstr在评论中建议的

theme_set及相关函数theme_replacetheme_update可能是此问题的更好解决方案。他们不需要编辑现有代码。

g <- ggplot(df, aes(x = x)) +
  geom_histogram() + 

g
old <- theme_set(theme_bw()) #capture current theme
g
theme_set(old) #reset theme to previous

答案 2 :(得分:4)

现在有一个R包可以全局设置主题。 https://rstudio.github.io/thematic/

他们的示例代码:

library(thematic)
thematic_on(
  bg = "#222222", fg = "white", accent = "#0CE3AC",
  font = font_spec("Oxanium", scale = 1.25)
)

此后,每个图都会继承这些设置。