解决R Markdown生成PDF时modelsummary包modelplot()图表日语字符乱码问题
解决modelsummary::modelplot()日语图例乱码问题
我之前也碰到过类似的情况——modelplot()默认使用自己的专属主题theme_ms(),会覆盖你全局设置的ggplot2主题,所以你之前配置的theme_set()对图例文字并没有生效。下面给你两个可行的解决办法:
方法1:直接在modelplot后追加图例字体设置
最简单的方式就是在生成图表后,用theme()单独指定图例文本的字体,直接覆盖默认主题的设置:
library(modelsummary) # 你的模型定义 model <- list( `モデル1` = lm(mpg ~ ., data = mtcars), `モデル2` = lm(Sepal.Length ~ ., data = iris) ) # 生成图表并修改图例字体 modelplot(model) + theme(legend.text = element_text(family = family_serif)) # 使用你之前定义的family_serif字体
方法2:自定义modelsummary的默认主题
如果你需要多次使用modelplot(),可以自定义一个包含日语字体设置的主题,每次调用时指定,避免重复代码:
library(modelsummary) # 自定义带日语字体的modelsummary主题 theme_ms_jp <- function() { theme_ms() + # 基于默认的theme_ms()进行修改 theme( text = element_text(family = family_serif), legend.text = element_text(family = family_serif) ) } # 使用自定义主题生成图表 modelplot(model, theme = theme_ms_jp())
额外检查点
如果还是有问题,可以确认一下字体是否被正确识别:
- 运行
systemfonts::system_fonts(),查看输出里有没有你指定的MS Gothic或MS Mincho - 要是字体没找到,可能需要用
fontregisterer重新注册,或者换成系统里确实存在的日语字体(比如"Noto Sans JP")
内容的提问来源于stack exchange,提问作者ryoto
相关产品推荐
相关产品推荐

