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

时间:2018-10-28 05:41:21

标签: r vector-graphics

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

2 个答案:

答案 0 :(得分:3)

(请注意,我是devEMF软件包的开发人员;我只是偶尔检查一下stackoverflow,所以现在就看看)

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

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

答案 1 :(得分:1)

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

rmarkdown

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

enter image description here

但是,当我直接使用您的代码生成EMF文件并将--- 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")) ``` 拖到Word文件中时,得到的结果与您相同:

enter image description here

但是,我确实发现,如果我将颜色更改为test.emf(实际上是白色),则该颜色会在EMF文件输出中正确呈现(我尝试过的任何其他颜色规范都一样,除了{ {1}}或"#FEFEFE")。因此,如果您需要另存为EMF,则有望完成这项工作。

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