當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。