在R Markdown中更改ggplot2字体:编织PDF时失败(但编织HTML时不失败)



我有一个R Markdown文件,我正在通过knitr, Pandoc和LaTeX编译成PDF。它包含使用ggplot2创建的几个图形。我想更改图形中使用的字体,以匹配正文使用的字体。

下面的代码在编织到HTML时工作得很好,即图形在轴上显示为Times New Roman。但是,当转换为PDF时,会抛出一个错误。

---
title: "Font test"
author: "Westcroft to Apse"
date: '2022-05-24'
output:
pdf_document: default
html_document:
df_print: paged
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(ggplot2)
theme_set(theme_bw(base_family = "Times New Roman"))
```
```{r}
mtcars %>%
ggplot(aes(x = wt, y = mpg)) +
geom_point()
```

这是当我尝试编织PDF时出现在渲染选项卡中的错误信息:

Line 21 Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  : 
invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)
Execution halted

我该如何解决这个问题?

编辑:澄清一下,这不是一个关于使用Times New Roman的问题。事实上,那不是我想用的字体。我只是在这里用它作为一个例子,说明相同的代码如何渲染为HTML而不是PDF。

您使用的是Windows吗?如果是这样,问题是R无法识别"Times New roman"字体。有了你的推荐信。将名称更改为"serif"设置Times New Roman作为情节的字体。

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(ggplot2)
theme_set(theme_bw(base_family = "serif"))
```
```{r}
mtcars %>%
ggplot(aes(x = wt, y = mpg)) +
geom_point()
```

根据这篇文章,字体"Times New Roman"可访问为"衬线"。您可以使用命令windowsFonts():

检查这一点。
$serif
[1] "TT Times New Roman"
$sans
[1] "TT Arial"
$mono
[1] "TT Courier New"

最新更新