如何调整lattice图例文字颜色以适配thematic深色主题?
解决nlme包lattice图图例文字在深色主题下不可读的问题
问题重现
在深色主题IDE中使用thematic包配置绘图主题后,nlme包生成的lattice图(如plot(Machines))图例文字无法辨认,但其他lattice相关显示效果正常。最小示例代码如下:
library(nlme) library(thematic) # 配置主题颜色 thematic_on( bg = "#0f0b15", fg = "#b8c6d5", accent = "#bf8f8f", qualitative = RColorBrewer::brewer.pal(8, "Dark2") ) plot(Machines)
解决方案
thematic对lattice图的图例文本元素适配存在遗漏,可通过以下两种方式修正:
1. 单次绘图时指定图例文本颜色
在调用plot(Machines)时,通过par.settings参数直接设置图例文本的颜色,匹配thematic配置的前景色:
plot(Machines, par.settings = list( legend.text = list(col = thematic_get_option("fg")) ) )
也可直接使用配置好的颜色值:
plot(Machines, par.settings = list( legend.text = list(col = "#b8c6d5") ) )
2. 全局配置lattice图例文本颜色
如果需要所有lattice图都生效,可通过lattice.options全局修改默认主题:
library(lattice) # 修改全局lattice主题的图例文本颜色 lattice.options( default.theme = modifyList( lattice.getOption("default.theme"), list(legend.text = list(col = thematic_get_option("fg"))) ) ) # 之后正常绘图即可 plot(Machines)
原理说明
thematic包对lattice的主题适配未完全覆盖图例文本这一细节元素,手动指定颜色可让图例文字与深色背景形成足够对比度,从而恢复可读性。
内容的提问来源于stack exchange,提问作者wdkrnls
相关产品推荐
相关产品推荐

