grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的警告:字符 0x20 的字体宽度未知

2023-11-23

我想使用免费字体Lato in ggplot2因为我的 R markdown 文档的其余部分就是用这种字体设置的。

该字体已安装在我的系统上,并且可以在字体簿中找到(只有一次).

所有可用字体均加载extrafont封装并注册在extrafontdb.

当我将 Markdown 文档编织为 PDF 时,所有文本均正确排版Lato。但是,我的 ggPlots 的绘图标签未显示。

我还收到以下警告消息:

Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font width unknown for character 0x20

嵌入文档中包含的字体后extrafont::embed_fonts所有图形的绘图标签均使用Lato作为字体,但是

  • 绘图标签的单词之间不包含任何空格,
  • 任何引用(内部链接、URL、引文)都不再有效。

下面提供了一个 MWE,包括带有和不带有 Lato 字体的 ggPlot 图形(Lato 可在此处免费获取) 要随后嵌入字体,需要运行embed_fonts("TestRmd.pdf", outfile="TestRmd_embedded.pdf")

任何帮助是极大的赞赏!

MWE:

---
title: "Embedding Fonts in PDF"
output: pdf_document
urlcolor: blue
---

```{r echo=FALSE}
library(ggplot2)
```

### Plot with standard font {#standard}
```{r echo=FALSE, out.width = '30%'}
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +     
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon")
```

### Load fonts and set font for ggplots globally
```{r include=FALSE}
# install.packages("extrafont") # see https://github.com/wch/extrafont/
library(extrafont)
# font_import()   # run once
loadfonts()       # loadfonts

# globally set ggplot2 theme and font ("Lato Light")
theme_set(theme_minimal(base_size=12, base_family="Lato Light"))
```

### Plot with newly set standard font (= Lato) {#lato}
```{r echo=FALSE, out.width = '30%'}
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +     
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon")
```

### Plot with Impact font {#impact}
```{r echo=FALSE, out.width = '30%'}
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="Impact"))
```

### Run to embed fonts
```{r eval=FALSE, include=TRUE}
embed_fonts("TestRmd.pdf", outfile="TestRmd_embedded.pdf")
```

### Links test

Links test 1 (internal reference): [Headline standard](#standard)

Links test 2 (URL): [RStudio has become a Public Benefit Corporation](https://blog.rstudio.com/2020/01/29/rstudio-pbc)

AddOn:

一个更简单的问题,但可能与同一问题相关:

library(extrafont)
extrafont::font_import()
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + theme_minimal(base_size=10, base_family="Lato Light")
ggsave(p, filename = "iris.pdf")

保存的 pdf 中的绘图不包含任何标签。使用cairo_pdf正如对几个 SO 的建议(例如1, 2)网站没有帮助并导致以下错误:

ggsave(p, filename = "iris.pdf", device = cairo_pdf)
# In dev(filename = filename, width = dim[1], height = dim[2], ...) :
#   failed to load cairo DLL

我试图让它工作使用extrafont但没有成功。我仍然不太确定,但我认为这是一个错误。这是使用该包的解决方案showtext:

---
title: "Embedding Fonts in PDF"
output: pdf_document
urlcolor: blue
---

```{r include=FALSE}
# notice the chunk option 'fig.showtext' that tells R to use the showtext 
# functionalities for each ne graphics device opened
knitr::opts_chunk$set(dev = 'pdf', cache = FALSE, fig.showtext = TRUE)

library(ggplot2)
library(showtext)

font_add(family = "Lato", regular = "/Users/martin/Library/Fonts/Lato-Light.ttf") 
```


### Plot with newly set standard font (= Lato) {#lato}
```{r echo=FALSE, out.width = '100%'}
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(family="Lato"))
```

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的警告:字符 0x20 的字体宽度未知 的相关文章

  • 如何在R中创建for循环? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 R 编程中启动 for 循环 https stackoverflow com questions 4162363 how to start a for loop in r programmin
  • 使用 R Markdown 文档作为函数源

    我正在研究 R Markdown 来记录我经常使用的功能 我会将它们放入 R Markdown 文件中以记录它们 然后如果我几个月后回来查看它 就能够阅读我在函数背后的想法 我的问题是 如果我开始一个新的 R 项目 是否可以获取 r mar
  • 来自大型数据帧的共现

    我有一个数据框 其中包含有关每个用户访问过哪些城市的信息 df visited lt data frame user c john john claire claire doe doe city c Antananarivo Barcelo
  • R 获取子字符串和正则表达式?

    我有一组文件名字符串 我想提取 符号之后但文件扩展名之前的所有字符 例如 文件名之一是 HelloWorld you txt 我想返回字符串you 这是我的代码 hashPos grep name fixed TRUE dotPos len
  • R中具有特定条件的多列变异

    我有这个数据 M1 M2 M3 UCL 1 2 3 1 5 我想在这种情况下创建新列 如果M1大于UCL MM1将为 UP 否则为 NULL 如果M2大于UCL MM2将为 UP 否则为 NULL 如果M3大于UCL MM3将为 UP 否则
  • R中data.frame(列表)的列平均值

    Data https i stack imgur com ZYsmv jpg 请 我需要计算此 data frame 中维吉尼亚币 Sepal Length 列的平均值 Sepal Length Sepal Width Petal Leng
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并
  • 从 leafletProxy() 返回渲染的传单地图

    是否可以在渲染后在 Shiny 中检索传单地图 下面是一个代码示例 展示了如何生成地图leaflet 与返回的不同leafletProxy 即使它们在渲染时看起来完全相同 是否有一个功能可能不同于leafletProxy 获取实际的 htm
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s
  • 如何在有条件的情况下获得R中多列的中位数(根据另一列)

    我是 R 初学者 我想知道如何完成以下任务 我想用数据集所有列的中位数替换数据集的缺失值 但是 对于每一列 我想要某个类别的中位数 取决于另一列 我的数据集如下 structure list Country structure 1 5 La
  • 在 R 中计算大矩阵的零空间

    我找不到任何函数或包来计算 a 的零空间或 QR 分解 bigmatrix from library bigmemory 在 R 中 例如 library bigmemory a lt big matrix 1000000 1000 typ
  • data.table 查找值并翻译

    像许多人一样 我是 R 新手 我有一个大数据集 500M 行 我已将其读取到 data table 中logStats其中有如下数据 head logStats 15 time pid mean 1 2014 03 10 00 00 00
  • R 子集 XTS 工作日

    如何对 xts 对象进行子集化以仅包含工作日 周一至周五 周六和周日除外 这就是我要做的 library xts data sample matrix sample xts lt as xts sample matrix descr my
  • Rcpp 包不包含 Rcpp_precious_remove

    我一直在尝试创建数据库并安装 DBI 包 但仍然遇到此错误 我重新安装了 DBI 和 RSQLite 软件包 但它们似乎不起作用 library DBI con lt dbConnect RSQLite SQLite dbname memo
  • GLMER 警告:方差-协方差矩阵 [...] 不是正定的或包含 NA 值

    我有时发现我的 GLMM 来自glmer 包裹lme4 当调用其摘要时显示以下警告消息 Warning messages 1 In vcov merMod object use hessian use hessian variance co
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 使用 ggplot 为各个图例值选择所选颜色(HSV 或 HCL 或 RGB)

    我有一个类似这样的数据集 data lt read table text Me EE PE DE TE DEE CE 1 1 1 4 5 2000 0 50 0 2547 0 69 2 1 2 2 4 3000 NA 0 5896 2 56
  • R ggplot:加权 CDF

    我想使用绘制加权 CDFggplot 一些旧的非 SO 讨论 例如this https stat ethz ch pipermail r help 2012 October 337288 html从 2012 年起 建议这是不可能的 但我想
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 将 R 中的列中的单引号替换为双引号

    我在 R 中的数据框有一个 A 列 其中有带单引号的字符串数据 Column A Hello World Hi World Good morning world 我想做的是将单引号替换为双引号并实现如下所示的输出 Column A Hell

随机推荐

  • 为什么我能够使用我的值构造函数,即使我不导出它?

    作为实践 我在名为 Queue 的模块中实现了队列数据类型 我的数据类型也称为 Queue 这是它唯一的值构造函数 module Queue Queue enq emptyQueue where data Queue a Queue inb
  • 错误:“(vlog-2110) 非法引用网络”

    我在 SystemVerilog 中有一个简单的 FIFO 代码 我得到几个vlog 2110 illegal reference to net错误消息 我的错误消息后面是我的代码 错误信息 vlog work 工作 sv stats no
  • 如何使用 Java 8 流制作笛卡尔积?

    我有以下集合类型 Map
  • 从 ViewModel 获取 [key] 属性

    我有一个 ViewModel 其中有一个 key 属性 我想从该视图模型的实例中获取它 我的代码看起来像这样 虚构模型 class AddressViewModel Key ScaffoldColumn false public int U
  • “无法调用 DateTime 上的方法”以及其他限制

    有谁知道编译时未捕获的 LINQ to SQL 查询限制的明确列表 以及 如果可能 这些限制的解决方法 到目前为止我们的清单是 Calling methods such as Date on DateTime 没有找到解决方法 string
  • 如何在频域中旋转图像?

    我听说应该可以对 jpeg 图像进行无损旋转 这意味着您可以在频域中进行旋转 而无需 IDCT 我尝试用谷歌搜索但没有找到任何东西 有人可以对此带来一些启发吗 我所说的无损是指我不会在旋转中丢失任何附加信息 当然 这可能只有在旋转 90 度
  • TCP、HTTP 和多线程最佳点

    我试图了解我获得的性能数据以及如何确定最佳线程数 请参阅这篇文章的底部以获取我的结果 我用 Perl 编写了一个实验性多线程 Web 客户端 它下载一个页面 获取每个图像标签的源并下载图像 丢弃数据 它使用非阻塞连接 每个文件的初始超时为
  • 如何为图像数据集添加标签进行分类?

    我正在使用 Mac 操作系统上安装的 python 3 6 我有一个文本文件 用于存储图像名称和每个图像的类号 label txt img0001 jpg 1 img0002 jpg 3 img0003 jpg 5 img0004 jpg
  • .Net 的 Web 应用程序测试(WatiN 测试记录器)

    我一直在使用 WatiN 作为我当前项目的测试工具 除了测试记录器的小错误之外 我还能够使用它并与 NUnit 结合自动执行许多测试 还有其他人有使用他们可能建议的不同工具的经验吗 我之前使用过 Selenium 并将其挂接到CruiseC
  • rake 资产:预编译不起作用(rails 3.1.1)

    我正在部署到heroku 但我发现css文件没有被提供 它们也无法在heroku上找到 我读到我需要先在本地进行 rake asset precompile 但当我这样做时 我得到 C project gt bundle exec rake
  • “Maven->更新项目配置”菜单项在哪里?

    我在 Eclipse 项目中缺少 Maven 依赖项 正如中所述这个问题 我很想用找到的解决方案 但是当我在项目资源管理器中右键单击我的项目时 我找不到任何此类菜单项 如果我右键单击该项目的pom xml 我在 Maven 的菜单中看到的是
  • 使用 https 代理运行 AngularJS Protractor

    尝试运行量角器时 我在命令行中收到以下错误 gt 致命错误 量角器退出 代码 1 我需要代理到 https 测试服务器 我该如何实现这个目标 我听从了这个建议Github问题 但我仍然收到上述错误 这是我的配置文件 A reference
  • 如何使用 Allocations 将数组值传入和传出 Android RenderScript

    我最近一直在使用 RenderScript 目的是创建一个程序员可以轻松使用的 API 类似于 Microsoft Accelerator 的工作方式 我目前遇到的麻烦是 我想在 RenderScript 层之间传递值 并让所有内容以尽可能
  • 如何从 iPhone 视频录制中实时捕捉逐帧图像

    我正在尝试实时测量所选颜色的饱和度 如下所示 我正在关注本指南来自苹果 我更新了代码以使用 ARC 当然还使我的视图控制器成为AVCaptureVideoDataOutputSampleBufferDelegate 但我不知道如何实际开始捕
  • 如何在没有 BOM 的情况下重定向 PowerShell 中的输入?

    我正在尝试通过以下方式重定向 PowerShell 中的输入 Get Content input txt my program args 问题是管道 UTF 8 文本前面带有 BOM 0xEFBBBF 而我的程序无法正确处理它 一个最小的工
  • 如何从 R 编写 PostgreSQL 中的表?

    目前 要在 PostgreSQL 表中插入数据 我必须创建一个空表 然后执行insert into table values 连同数据框一起折叠成包含所有值的单个字符串 它不适用于大型数据帧 The dbWtriteTable 不适用于 P
  • 如何通过 C 预处理器打印磅/散列?

    我需要帮助执行以下操作 预处理器宏标签 x 应输出 x 例如 define label x 如果我调用 label aname 输出应为 aname 不带引号 我知道 以下尝试是错误的 define label x x leads to x
  • GCC 致命错误:stdio.h:没有这样的文件或目录

    我正在尝试使用 GCC 4 9 实验性 在 OS X 10 9 上用 C 编译程序 由于某种原因 我在编译时收到以下错误 gcc fatal error stdio h No such file or directory 然后我尝试了一个简
  • ASP.NET 与 WCF 聊天

    我正在寻找为 ASP NET 页面实现聊天室界面 我正在学习 WCF 它似乎适合聊天应用程序 在我深入研究 WCF 之前 我想确定它是在 ASP NET 中开发聊天应用程序的正确选择 有人可以提供任何反馈吗 我发现了一些主要使用 Silve
  • grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的警告:字符 0x20 的字体宽度未知

    我想使用免费字体Lato in ggplot2因为我的 R markdown 文档的其余部分就是用这种字体设置的 该字体已安装在我的系统上 并且可以在字体簿中找到 只有一次 所有可用字体均加载extrafont封装并注册在extrafont