首页 > 解决方案 > 更改字体后,RMarkdown 不会编织 ggplot2 绘图

问题描述

下面的图是在 R 中生成的(没有任何问题),使用以下代码:

library(tidyverse)
library(extrafont)
loadfonts()

x <- rexp(100)

data.frame(info = x) %>% 
ggplot() + 
geom_histogram(aes(x = info), col = "red", fill = "red", alpha = 0.5) +
theme_minimal() +
theme(text = element_text(family="LM Roman 10"))

块中的图像

如您所见,绘图的字体设置为“LM Roman 10”,感谢这篇文章,我能够做到这一点,它在 R 中完美运行。

但是,当我尝试使用 RMarkdown 将图像放置在 LaTeX 文档中时,出现此错误:

Quitting from lines 10-22 (min_example.Rmd) 
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
Además: There were 50 or more warnings (use warnings() to see the first 50)
Ejecución interrumpida
    

这是代码min_example.Rmd

---
title: "Untitled"
author: "Javier Rojas"
date: "2/9/2020"
output: pdf_document
---


```{r, echo=FALSE}

library(tidyverse)
library(extrafont)
loadfonts()

x <- rexp(100)

data.frame(info = x) %>% 
ggplot() + 
geom_histogram(aes(x = info), col = "red", fill = "red", alpha = 0.5) +
theme_minimal() +
theme(text = element_text(family="LM Roman 10"))
```

我正在使用运行 macOS High Sierra 和 R 3.6.1 的 Mac 计算机

标签: rggplot2fontsr-markdown

解决方案


通常很容易解决。问题应该是,您的计算机中没有安装该字体

您必须下载.otf字体文件,例如(https://fonts2u.com/lmroman10-regular.font)并将其安装在您的操作系统上。

如果您不知道如何执行此操作,只需 google 一下(例如“安装额外字体 Windows”),网上有很多关于它的教程。

-edit- 我有点快 - 没有意识到问题只是来自在 rmarkdown 中运行它。尝试以下操作:

```{r, fig.showtext=TRUE, echo=FALSE}
library("tidyverse")
library("showtext")

x <- rexp(100)

font_add("LM Roman 10", regular = "lmroman10-regular.otf")

data.frame(info = x) %>% 
ggplot() + 
geom_histogram(aes(x = info), col = "red", fill = "red", alpha = 0.5) +
theme_minimal() +
theme(text = element_text(family="LM Roman 10"))
      
```

添加fig.showtext=TRUE和很library("showtext")重要font_add("LM Roman 10", regular = "lmroman10-regular.otf")

我刚刚将 .otf 放在我的项目文件夹中 - 但我认为你也可以给它另一个路径。


推荐阅读