如何在 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)
我正在尝试制作可以插入到 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)