如何在R中的矢量图形中生成白色文本?

问题描述 投票:2回答:2

我正在尝试制作可插入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()
r vector-graphics
2个回答
1
投票

您可以通过在rmarkdown中创建它直接在Word文档中生成它:

---
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"))
```

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

enter image description here

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

enter image description here

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

几个月前,我和answered an SO question有类似的问题。在这种情况下,目标是使用xlsx包编写xlsx文件,并使用黑色文本的工作表标题。但是,文本实际上在输出文件中呈现为白色文本。在这种情况下,将颜色设置更改为几乎为黑色的"#010101",除了纯黑色("#000000""black")之外,还可以使用任何其他颜色规格。我不知道这两个问题是否相关,但我想如果它们存在,我会提到它。


3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.