You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:27:41