如何将ggplot自定义主题参数设置为全局默认值?
解决ggplot2全局自定义主题设置问题
你需要把theme_bw基础主题和自定义的主题元素合并后,再设置为全局默认,以下是两种可行方法:
方法一:先构建自定义主题再全局设置
先基于theme_bw创建包含自定义元素的主题,再用theme_set设为全局默认:
# 构建自定义主题 my_custom_theme <- theme_bw(base_size = 24) + theme( legend.key.size = unit(1.0, 'cm'), panel.grid.minor = element_line(size = 0.25), panel.grid.major = element_line(size = 0.5) ) # 设置为全局默认主题 theme_set(my_custom_theme)
方法二:先设置基础主题,再更新全局元素
先用theme_set指定theme_bw,再用theme_update直接传入要修改的主题元素(注意不需要套theme()函数):
theme_set(theme_bw(base_size = 24)) # 直接更新全局主题的指定元素 theme_update( legend.key.size = unit(1.0, 'cm'), panel.grid.minor = element_line(size = 0.25), panel.grid.major = element_line(size = 0.5) )
你之前尝试出错的原因:
- 两次调用
theme_set:第二次的theme()会完全覆盖之前的theme_bw,导致回到默认主题样式。 - 给
theme_bw传legend.key.size等参数:这些不是theme_bw的官方参数,theme_bw仅接受base_size、base_family等少数基础参数,因此报错"unused arguments"。 theme_update传入theme()对象:theme_update的参数是单个主题元素的键值对,而非完整的theme()对象,所以会出现合并元素的错误。
内容的提问来源于stack exchange,提问作者David S
相关产品推荐
相关产品推荐

