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)
预期输出

实际输出

会话信息
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
相关产品推荐
相关产品推荐

