我可以生成并保存一个包含半透明效果(alpha)的ggplot图形为.pdf格式:
library(ggplot2)
library(cowplot)
p <- qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = 0.5)
save_plot("plot.pdf",p)
这张图片在我的Mac电脑上(作为pdf中的单独图像或嵌入Word文档)完美地显示出来。然而,多年来我痛苦地发现,我的图像中的半透明通常在他人的电脑上无法正确显示,尤其是当它们被嵌入到微软Office文档中时。当我不得不在会议室的电脑上做演示时,突然间我的PowerPoint演示文稿中的图像什么也没有显示,只有一个空白的图表,这让我非常痛苦。如果我提交一篇论文给一份期刊,并收到编辑发来的电子邮件说我的图像在Word文档中无法正常显示,那也是个问题。由于我的Mac上的图像看起来很好,我找不到任何方法验证这些图像是否正确,除非明确要求别人查看所包含的图像文件。 我已经尝试了一些在线解决方案,例如:
save_plot("plot.pdf",p, useDingbats=F)
或者
save_plot("plot.pdf",p, device = cairo_pdf, fallback_resolution = 1200
但是我仍然收到合作者的电子邮件,说他们无法看到图表,在演示中也会遇到尴尬的时刻,因为图表显示不出任何东西。在地球上,我怎么才能保存我的图表为pdf而不丢失信息呢?此时,我不知道这个问题是否与R中构建图表的方式有关,还是与Microsoft Office处理带有半透明度的pdf图表有关。事实是,我没有看到我的研究网络中其他人遇到这些问题。FYI
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
sockets libxml fifo cledit iconv NLS profmem
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
cairo ICU long.double libcurl
TRUE TRUE TRUE TRUE
ggplot2::ggsave()
?但是,save_plot()
在幕后调用它,所以可能没有太大的区别。或者尝试使用cairo_ps()
通过光栅化透明度来生成 EPS。ggsave("plot.eps", p, device=cairo_ps, fallback_resolution = 1200)
不可否认,这并不是一个理想的解决方案。 - Javsvg
并导出为 svg 而不是 pdf 吗?编辑:这个答案建议使用postscript
以便与 Word 兼容:https://dev59.com/FGkw5IYBdhLWcg3w8O6o - moodymudskippergraph2doc
的答案。 - moodymudskipper