r - 我不知所措 - ggplot2::ggsave 不会导出自定义字体

标签 r ggplot2 fonts ggsave

我今天花了一整天的时间来解决这个问题。我发现了大量的旧帖子没有解决这个问题的实际解决方案。

我有一个自定义字体 - 它已加载,已安装,当我在 font_families() 下查看时它会出现。

当我生成绘图时,字体显示正确,但当我使用 ggsave 导出它时,字体完全消失。

MWE 代码:


a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  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, 
       #height=26/(10/3.125), 
       dpi=300)

预期输出:

enter image description here

实际输出:

enter image description here

session 信息:

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

最佳答案

这个答案完全归功于@Abigail。首先,我在绘图之前添加了 showtext_auto() ,这使得 ggsave 正常工作,但问题是文本行之间存在额外的间距。

我在 showtext github 上找到了关于这个问题的讨论 here 。问题是 ggsave 和 showtext dpi 默认值不同(分别为 300 和 96)。因此,在绘图之前添加 showtext_opts(dpi = 300) 也解决了该问题。

最终代码,以及解决方案,如下:

library(ggplot2)

showtext::showtext_auto()
showtext::showtext_opts(dpi = 300)

a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  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)

关于r - 我不知所措 - ggplot2::ggsave 不会导出自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74408392/

相关文章:

caching - 如何使用 Vercel/Next.js 改进字体加载/缓存?

r - 将图例标题放置在已位于条形图顶部的水平图例之上

ios - 如何让用户从应用程序内的字体、大小和颜色列表中进行选择?

css - font-face src 中格式的可能值是什么?

r - ggplot2 - stat_summary 会产生 ..y.. 吗?我将如何对 y 进行子集化?

r - ggplot 在同一面板中组合线和区域(facet-grid)

r - 如何在gganimate中使用自己的图像作为geom_point?

r - 如何将完整的数据框对象复制到剪贴板?

r - 计算具有几乎相同名称的列对的差异(最后一个字符串不同)

r - 从 travis-ci 上的 github repo 的特定分支安装特定的 R 包