以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語言可以這么玩 |高質量圖片這樣導出!