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

时间:2015-07-12 19:47:21

标签: r graphics plot ggplot2 postscript

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: enter image description here

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

使用postscript() btw也不起作用,因为它不支持透明度,并返回错误“此设备不支持半透明:每页仅报告一次”。

1 个答案:

答案 0 :(得分:1)

最新的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()