使用PDF Graphics Device(png
)时,与png
版本相比,ggplot2图例存在差异。 png
中的渐变更平滑,而pdf
中可见不同的渐变条纹。我查看了pdf
的文档并调整了点大小,但这似乎并没有使渐变更平滑。如何使pdf
渐变像png
一样平滑?
PNG
png(file="grad1.png")
ggplot(mtcars, aes(x=cyl, y=mpg, fill=hp)) +
geom_point() +
scale_fill_gradient(low="grey88", high="black")
dev.off()
#Versus
pdf(file="grad1.pdf")
ggplot(mtcars, aes(x=cyl, y=mpg, fill=hp)) +
geom_point() +
scale_fill_gradient(low="grey88", high="black")
dev.off()
答案 0 :(得分:3)
您可以在nbin
中增加guide_colourbar()
,
ggplot(mtcars, aes(x=cyl, y=mpg, fill=hp)) +
geom_point() +
scale_fill_gradient(low="grey88", high="black")
last_plot() + guides(fill = guide_colourbar(nbin=4, raster=FALSE))
last_plot() + guides(fill = guide_colourbar(nbin=300, raster=FALSE))
答案 1 :(得分:0)
使用Cairo库时是否会发生这种情况?
library('Cairo')
CairoPDF('output.pdf')
#plot
dev.off()
答案 2 :(得分:0)
在查看?scale_fill_gradient
时,它会看到“seq_gradient_pal
有关底层调色板的详细信息”。在查看seq_gradient_pal
包中scales
的来源时,有趣的是看到该函数使用多个离散颜色生成渐变。 seq_gradient_pal
函数(source)中使用了scale_fill_gradient
。我无法弄清楚这是否意味着总是使用seq_gradient_pal
估计渐变,或者稍后在矢量图像中进行渐变填充。如果确实从几种不连续的颜色估计了渐变,那么这可能是您遇到问题的原因。
另请参阅Paul Murrell关于此article中渐变的评论。摘录:“一个例子是渐变填充,R图形引擎没有明确支持”。但是,gridSVG
包现在支持渐变填充。
跟进@ baptiste的评论。请注意,guide_colourbar
有一个raster
选项,默认设置为TRUE
。查看?guide_colourbar
,您可以看到“If TRUE then the colorbar is rendered as a raster object. If FALSE then the colorbar is rendered as a set of rectangles. Note that not all graphics devices are capable of rendering raster image.
”