當前/活動主題(請參閱 theme()
)會自動應用於您繪製的每個繪圖。使用 theme_get()
獲取當前主題,並使用 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 ggplot2 theme 修改主題的組件
- R ggplot2 annotation_logticks 注釋:記錄刻度線
- R ggplot2 vars 引用分麵變量
- R ggplot2 position_stack 將重疊的對象堆疊在一起
- R ggplot2 geom_qq 分位數-分位數圖
- R ggplot2 geom_spoke 由位置、方向和距離參數化的線段
- R ggplot2 geom_quantile 分位數回歸
- R ggplot2 geom_text 文本
- R ggplot2 get_alt_text 從繪圖中提取替代文本
- R ggplot2 annotation_custom 注釋:自定義grob
- R ggplot2 geom_ribbon 函數區和麵積圖
- R ggplot2 stat_ellipse 計算法行數據橢圓
- R ggplot2 resolution 計算數值向量的“分辨率”
- R ggplot2 geom_boxplot 盒須圖(Tukey 風格)
- R ggplot2 lims 設置規模限製
- R ggplot2 geom_hex 二維箱計數的六邊形熱圖
- R ggplot2 scale_gradient 漸變色階
- R ggplot2 scale_shape 形狀比例,又稱字形
- R ggplot2 geom_bar 條形圖
- R ggplot2 draw_key 圖例的關鍵字形
- R ggplot2 annotate 創建注釋層
- R ggplot2 label_bquote 帶有數學表達式的標簽
- R ggplot2 annotation_map 注釋:Map
- R ggplot2 scale_viridis 來自 viridisLite 的 Viridis 色標
- R ggplot2 coord_fixed 具有固定“縱橫比”的笛卡爾坐標
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Get, set, and modify the active theme。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。