当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R ggplot2 theme_get 获取、设置和修改活动主题


当前/活动主题(请参阅 theme() )会自动应用于您绘制的每个绘图。使用 theme_get() 获取当前主题,并使用 theme_set() 完全覆盖它。 theme_update()theme_replace() 是更改各个元素的简写。

用法

theme_get()

theme_set(new)

theme_update(...)

theme_replace(...)

e1 %+replace% e2

参数

new

新主题(主题元素列表)

...

主题设置的命名列表

e1, e2

要组合的主题和元素

theme_set()theme_update()theme_replace()

无形地返回以前的主题,以便您可以轻松保存它,然后恢复它。

添加到主题

+%+replace% 可用于修改主题中的元素。

+ 更新 e1 中与 e2 中指定的元素(非 NULL)不同的元素。因此,该运算符可用于增量添加或修改 ggplot 主题的属性。

相反,%+replace% 替换整个元素; e2 中未指定的主题的任何元素都不会出现在生成的主题中(即 NULL)。因此,该运算符可用于覆盖整个主题。

theme_update() 使用 + 运算符,以便主题元素中任何未指定的值将默认为它们在主题中设置的值。 theme_replace() 使用 %+replace% 完全替换该元素,因此任何未指定的值都会用 NULL 覆盖主题中的当前值。

综上所述, theme_set()theme_update()theme_replace() 之间的主要区别是:

  • theme_set() 完全覆盖当前主题。

  • theme_update() 使用 + 运算符修改当前主题的特定元素。

  • theme_replace() 使用 %+replace% 运算符修改当前主题的特定元素。

也可以看看

例子

p <- ggplot(mtcars, aes(mpg, wt)) +
  geom_point()
p


# Use theme_set() to completely override the current theme.
# theme_update() and theme_replace() are similar except they
# apply directly to the current/active theme.
# theme_update() modifies a particular element of the current theme.
# Here we have the old theme so we can later restore it.
# Note that the theme is applied when the plot is drawn, not
# when it is created.
old <- theme_set(theme_bw())
p


theme_set(old)
theme_update(panel.grid.minor = element_line(colour = "red"))
p


theme_set(old)
theme_replace(panel.grid.minor = element_line(colour = "red"))
p


theme_set(old)
p



# Modifying theme objects -----------------------------------------
# You can use + and %+replace% to modify a theme object.
# They differ in how they deal with missing arguments in
# the theme elements.

add_el <- theme_grey() +
  theme(text = element_text(family = "Times"))
add_el$text
#> List of 11
#>  $ family       : chr "Times"
#>  $ face         : chr "plain"
#>  $ colour       : chr "black"
#>  $ size         : num 11
#>  $ hjust        : num 0.5
#>  $ vjust        : num 0.5
#>  $ angle        : num 0
#>  $ lineheight   : num 0.9
#>  $ margin       : 'margin' num [1:4] 0points 0points 0points 0points
#>   ..- attr(*, "unit")= int 8
#>  $ debug        : logi FALSE
#>  $ inherit.blank: logi FALSE
#>  - attr(*, "class")= chr [1:2] "element_text" "element"

rep_el <- theme_grey() %+replace%
  theme(text = element_text(family = "Times"))
rep_el$text
#> List of 11
#>  $ family       : chr "Times"
#>  $ face         : NULL
#>  $ colour       : NULL
#>  $ size         : NULL
#>  $ hjust        : NULL
#>  $ vjust        : NULL
#>  $ angle        : NULL
#>  $ lineheight   : NULL
#>  $ margin       : NULL
#>  $ debug        : NULL
#>  $ inherit.blank: logi FALSE
#>  - attr(*, "class")= chr [1:2] "element_text" "element"

源代码:R/theme-current.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Get, set, and modify the active theme。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。