在grDevices
R函数cairo_pdf
和cairo_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()
btw也不起作用,因为它不支持透明度,并返回错误“此设备不支持半透明:每页仅报告一次”。
答案 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()