如何在 R 中的矢量图形中制作白色文本?

How can I make white text in vector graphics in R?

我正在尝试制作可以插入到 Word 中的矢量图形。但是,每当我尝试使用白色文本时,当我将其插入 Word 文档时,它会显示为黑色。如果我输出为 PDF,它工作正常,但不幸的是我不能直接将 PDF 导入 Word。当我输出到 EMF 并将该 EMF 图像导入 Word 文档时,如何让白色文本保持白色?

library(devEMF)
library(grid)

emf("test.emf",height=3,width=3)
  grid.newpage()
  grid.circle(x=0.5,y=0.5,r=0.1,gp=gpar(col=NA,fill="blue"))
  grid.text(1,x=0.5,y=0.5,gp=gpar(col="white"))
dev.off()

您可以直接在 Word 文档中生成它,方法是在 rmarkdown:

中创建它
---
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(grid)
```

```{r}
grid.circle(x=0.5, y=0.5, r=0.1, gp=gpar(col=NA,fill="blue"))
grid.text(1, x=0.5, y=0.5, gp=gpar(col="white"))
```

当我在我的系统上尝试这个时,输出看起来符合预期。

但是,当我直接使用您的代码生成 EMF 文件并将 test.emf 拖到 Word 文件中时,我得到了与您相同的结果:

不过,我确实发现,如果我将颜色更改为 "#FEFEFE",这几乎是白色的,那么在 EMF 文件输出中正确呈现的颜色(就像我尝试过的任何其他颜色规范一样,除了"white""#FFFFFF")。因此,如果您需要另存为 EMF,这有望完成工作。

几个月前,我 answered an SO question 遇到过类似的问题。在这种情况下,目标是使用 xlsx 包编写一个 xlsx 文件,并以黑色文本显示工作表标题。但是,文本实际上在输出文件中呈现为白色文本。在这种情况下,将颜色设置更改为 "#010101",实际上是黑色,就像除纯黑色("#000000""black")之外的任何其他颜色规范一样有效。我不知道这两个问题是否相关,但我想我会提一下以防万一。

(注意我是 devEMF 包的开发者;我只是偶尔检查一下 Whosebug,所以现在才看到这个)

devEMF 包含一个错误,该错误忽略了为白色文本设置文本颜色,直到首先使用了非白色文本。我已经提交给 CRAN devEMF 版本 3.6-2,它修复了这个错误;通过 CRAN 渗透需要几天时间。同时,由于您的用例是能够很好地处理 EMF+ 的 Microsoft Word,您可以通过在打开设备时请求 EMF+ 字体来立即解决该问题:

emf("test.emf",height=3,width=3, emfPlusFont=TRUE)