R:在 cairo_pdf 和 cairo_ps 中使用大于 72dpi 的 cairo 回退分辨率

R: use cairo fallback resolution greater than 72dpi in cairo_pdf and cairo_ps

grDevices R 函数 cairo_pdfcairo_ps 中提到,当透明度(alpha 通道)用于矢量输出时,它将光栅化 PDF 或 postscript 导出的图形72 dpi 的分辨率: https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/cairo.html

你试试就知道问题了

library(ggplot2)
cairo_ps(file = "test.eps",onefile = FALSE)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))
dev.off()

如输出(此处放大)所示,绘图符号严重像素化,表明它确实仅使用 72 dpi:

我想知道如何将回退分辨率提高到 600 dpi? 在 library(RGtk2) 中有一个命令 cairoSurfaceSetFallbackResolution,我认为这是相关的,但我不知道如何让 grDevices 使用该参数。有什么想法吗?

使用 postscript() 顺便说一句也不起作用,因为它不支持透明度,并且 returns 错误“此设备不支持半透明:每页仅报告一次".

最新的r-devel版本现在添加了额外的参数fallback_resolution,以指定不支持的矢量元素应该被光栅化的分辨率,这似乎解决了问题。例如。 :

library(ggplot2)
cairo_ps(file = "test.eps",onefile = FALSE,fallback_resolution=600)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))
dev.off()