过去我有一些半透明的问题,我通过在.Rprofile中添加这些行来解决它们:
setHook(packageEvent("grDevices", "onLoad"),
function(...) grDevices::X11.options(type='cairo'))
options(device='x11')
所以现在一切都在RStudio完美运作。但是当我在Rmarkdown中使用render函数生成.html文件时,我再次收到此错误:
在grid.Call.graphics(L_polygon,x $ x,x $ y,index)中:
此设备不支持半透明:仅报告一次 每页
我试图在RStudio中直接在png()设备中绘图并得到相同的错误。
所以我尝试了这个:
ggsave("image.png", device = Cairo_png)
使用cairoDevice库:它可以工作!
我试图强迫knitr使用Cairo_png作为设备。由于我遵循了文档,它应该是正确的方法。在我的Makefile中:
$(MAINDIR)/%.html:%.Rmd
Rscript \
-e "require(rmarkdown); require(knitr); require(cairoDevice)" \
-e "knitr::opts_chunk[['set']](dev = Cairo_png)" \
-e "knitr::opts_chunk[['set']](fig.width = 12)" \
-e "knitr::opts_chunk[['set']](warning = FALSE, message = FALSE, cache = 2)" \
-e "rmarkdown::render('$<', html_document(), output_dir = '$(MAINDIR)', intermediates_dir = '$(MAINDIR)')"
但是rmarkdown似乎没有使用Cairo_png作为设备,因为我仍然得到相同的警告。
所以我有两个问题,我只需要解决其中一个问题:1- png()设备不支持半透明,为什么? 2-我不能强制rmarkdown使用Cairo_png(支持半透明)。