ggplot 自定义字体在四开中不起作用

问题描述 投票:0回答:2

当我使用自定义字体渲染 ggplot 时,它可以在 IDE 中工作,但是在 Quarto 和 RMarkdown 中我不断收到此错误:

Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  : 
  invalid font type
Calls: .main ... drawDetails -> drawDetails.text -> grid.Call.graphics

我的系统上已经安装了这些字体,但 Quarto 或 RMakrdown 无法识别。
例如,这是我的脚本:

---
title: "TEST"
format: pdf
editor: visual
---

This plot works:
```{r echo=FALSE, message=FALSE, warning=FALSE}
library(tidyverse)

mtcars |>
  count (cyl) |>  
  ggplot (aes (x = cyl, y = n)) + 
  geom_col() + 
  labs (title = "Plot 1") + 
  geom_text (aes (label = n), 
             vjust = -1)
```

This plot does not:

 ```{r echo=FALSE, message=FALSE, warning=FALSE}
mtcars |>
  count (cyl) |>  
  ggplot (aes (x = cyl, y = n)) + 
  geom_col() + 
  labs (title = "Plot 2") + 
  geom_text (aes (label = n), 
             vjust = -1,
             family = "Montserrat") + 
  theme (text = element_text(size = 12,  family = "Montserrat"))
```
r ggplot2 r-markdown quarto
2个回答
4
投票

错过了一个步骤。我添加了

extrafont::loadfonts(quiet = TRUE)

在脚本的开头,现在可以运行了。


0
投票

只需使用系统字体方法更新此答案。我写了一篇关于它的文章来澄清一些事情,但总结是:

  • 安装{systemfonts}(它应该安装其依赖项)

  • 将图形设备更改为 AGG(在全局选项中)

  • 在 RMarkdown/Quarto 文档的开头,包含以下内容:

      knitr::opts_chunk$set(dev = "ragg_png")
    

如果这不起作用,完整的帖子还有额外的探索途径! https://www.cararthompson.com/posts/2024-01-12-using-fonts-in-r-for-dataviz/2024-01-12_getting-fonts-to-work

© www.soinside.com 2019 - 2024. All rights reserved.