以ggplot2等包为基础的R语言可视化是科研人员非常喜爱的一个方式,不过我也在这个上遇到了些问题。就是导出高分辨率的图片之后,插入到word里,就显得模糊不清(压缩得非常厉害)。如果不压缩的话,word动辄100M以上。最近刚好有了一个解决方式,就来介绍下。
解决方案思路:R+Corel Draw
这也是某期刊图的修改要求,必须提供.cdr文件。当然测试后发现,.cdr输出的tif即使被压缩,也能很清晰。
这里谈谈怎么做。首先R目前是没法直接输出.cdr格式的文件的,根据网上的经验就是用emf这个格式,能够输出Corel Draw能读取的矢量文件,导入后再做些微调。
但是R输出emf没有像tiff和jpeg那样的语句,主要使用的是savePlot函数。
这里摘下R的帮助文档再来解释这个函数
Usage
savePlot(filename = “Rplot”,
type = c(“wmf”, “emf”, “png”, “jpg”, “jpeg”, “bmp”,
“tif”, “tiff”, “ps”, “eps”, “pdf”),
device = dev.cur(),
restoreConsole = TRUE)
Arguments
filename
The filename under which to save the plot. Tilde-expansion (see path.expand is supported.
type
The type of plot, Windows metafile, PNG, JPEG, BMP (Windows bitmap format), TIFF, PostScript or PDF.
device
A device number of a windows device, by default the current device.
restoreConsole
See the ‘Details’ section of windows.
一个参数一个参数来解释吧。
filename:很好理解,就是你要输出的图片路径和名称,用字符串类型。如“C:/Rplot”。不必加后缀。
type:输出格式。
device:Windows设备的设备编号,默认为当前设备,这个参数。
restoreConsole:这个参数也是跟windows图形设备相关的。
实际使用时,后两个参数默认就可以。主要是针对前两个参数。
接下来用一个案例来展示下操作。使用的是R语言默认的mtcars数据。用plot绘图和ggplot2绘图各测试一遍。但是笔者就如网上所说在Rstudio中运行savePlot报错。
事实上这个语句只能在原生的Rgui中运行。因此将R代码存成脚本,在Rgui中直接用source调用写好的脚本即可。
plot只需直接绘图语句。而ggplot则需要多一句print语句,才能输出图片。
运行完后,打开corel draw,按下图进行操作。
这样就能把emf转变成全部可编辑的矢量了。
当然Rstudio也有个方法。就是使用复制到剪贴板的功能,然后粘贴到Corel Draw里面。
这就是将R导入到Corel Draw前期工作。相比与之前压缩得非常厉害的图片,我感觉Corel Draw输出的图片质量非常高。此外,后面搜索时,我也发现了R的一个包:devEMF: EMF Graphics Output Device。可以输出emf,这样在Rstudio里也可以操作了。
参考博客:
R语言可以这么玩 |高质量图片这样导出!