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

ggplot2::ggsave无法导出自定义字体问题求助

自定义字体在ggplot绘图中显示正常,但ggsave导出后消失

问题背景

耗时一整天排查,翻遍旧帖未找到有效方案。已安装并加载自定义字体Larsseit-BoldItalic,font_families()可查见该字体,RStudio绘图界面中字体显示正常,但使用ggsave导出图片后字体消失。

最小可复现代码(MWE)

a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("32款车型燃油效率") +
  xlab("重量(千磅)") + ylab("每加仑英里数") +
  theme(text=element_text(size=16, family="Larsseit-BoldItalic"))

a

ggsave(filename = "~/Desktop/test_plot.png", 
       plot=a, 
       width= 5.64*2, 
       height=3.58*2, 
       dpi=300)

预期输出

使用Larsseit-BoldItalic字体的目标图表

实际输出

字体丢失后的异常图表

会话信息

sessioninfo::session_info()
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.2.1 (2022-06-23)
 os       macOS Monterey 12.6.1
 system   x86_64, darwin17.0
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/Chicago
 date     2022-11-11
 rstudio  2022.07.0+548 Spotted Wakerobin (desktop)
 pandoc   NA

─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.2.0)
 cli           3.3.0   2022-04-25 [1] CRAN (R 4.2.0)
 colorspace    2.0-3   2022-02-21 [1] CRAN (R 4.2.0)
 DBI           1.1.3   2022-06-18 [1] CRAN (R 4.2.0)
 digest        0.6.29  2021-12-01 [1] CRAN (R 4.2.0)
 dplyr         1.0.9   2022-04-28 [1] CRAN (R 4.2.0)
 fansi         1.0.3   2022-03-24 [1] CRAN (R 4.2.0)
 farver        2.1.1   2022-07-06 [1] CRAN (R 4.2.0)
 generics      0.1.3   2022-07-05 [1] CRAN (R 4.2.0)
 ggplot2     * 3.3.6   2022-05-03 [1] CRAN (R 4.2.0)
 glue          1.6.2   2022-02-24 [1] CRAN (R 4.2.0)
 gtable        0.3.0   2019-03-25 [1] CRAN (R 4.2.0)
 labeling      0.4.2   2020-10-20 [1] CRAN (R 4.2.0)
 lifecycle     1.0.1   2021-09-24 [1] CRAN (R 4.2.0)
 magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.2.0)
 munsell       0.5.0   2018-06-12 [1] CRAN (R 4.2.0)
 pillar        1.8.0   2022-07-18 [1] CRAN (R 4.2.1)
 pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.2.0)
 purrr         0.3.4   2020-04-17 [1] CRAN (R 4.2.0)
 R6            2.5.1   2021-08-19 [1] CRAN (R 4.2.0)
 rlang         1.0.4   2022-07-12 [1] CRAN (R 4.2.0)
 rstudioapi    0.13    2020-11-12 [1] CRAN (R 4.2.0)
 scales        1.2.0   2022-04-13 [1] CRAN (R 4.2.0)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.2.0)
 tibble        3.1.8   2022-07-22 [1] CRAN (R 4.2.0)
 tidyselect    1.1.2   2022-02-21 [1] CRAN (R 4.2.0)
 utf8          1.2.2   2021-07-24 [1] CRAN (R 4.2.0)
 vctrs         0.4.1   2022-04-13 [1] CRAN (R 4.2.0)
 withr         2.5.0   2022-03-03 [1] CRAN (R 4.2.0)

 [1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library

解决方法

方案1:用showtext包嵌入字体

ggsave默认设备无法直接识别系统自定义字体,showtext可将字体嵌入输出图片:

  • 安装并加载包:
install.packages("showtext")
library(showtext)
  • 注册字体(系统已安装的字体直接指定名称,未安装需提供字体文件路径):
font_add("Larsseit-BoldItalic", "Larsseit-BoldItalic.ttf")
showtext_auto() # 开启自动渲染
  • 重新绘图导出即可。

方案2:修改ggsave的设备参数

在macOS环境下,指定type="cairo"可让设备正确读取系统字体:

ggsave(filename = "~/Desktop/test_plot.png", 
       plot=a, 
       width= 5.64*2, 
       height=3.58*2, 
       dpi=300,
       type="cairo")

方案3:确认字体名准确性

部分字体的显示名称与内部实际名称不一致,用以下命令查看真实名称:

install.packages("systemfonts")
library(systemfonts)
match_font("Larsseit")

根据返回结果调整element_text(family=...)中的字体名。

内容的提问来源于stack exchange,提问作者lucretiuss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:55:17