R 中將圖表導出成文件


要特別強調的一點是,必須要使用 dev.off() 命令來告訴 R 我們已經完成繪圖,否則我們的要保存的圖像就不會出現

1、導出 PDF 文件

PDF 是一個矢量文件格式。矢量文件在作為輸出時是比較受歡迎的,因為它可以被任意地縮放而不會失真(像素化),一個向量文件的大小通常比相應的位圖文件小,除非它包含了太多的對象(比如一幅散點圖中有成千上萬的樣本點,那么它的矢量圖就會很大,位圖則相對較小)。

pdf("plots.pdf")
plot(...)
plot(...)
dev.off()

默認情況下,導出的 PDF 文件為 7x7 英寸大,每一幅圖都被放在一個新頁中。我們可以通過如下方式來改變大小:

# 6x3 英寸 
pdf("plots.pdf", width=6, height=3)

# 10x6 厘米
pdf("plots.pdf", width=10/2.54, height=6/2.54)

如果我們想直接用一些矢量圖繪制工具例如 Inkscape 或 Illustrator 來處理這些矢量文件,那么有可能會出現數據點呈字符形式而非原本的圓形或方形等,如下方法可以避免這一問題:

pdf("plots.pdf", useDingbats=FALSE)

2、導出 SVG 文件

SVG 是另一種矢量格式。 svg()函數的默認設置並不允許將多頁圖像輸出為單一文件,這是因為大多數 SVG 瀏覽器都不支持多頁的 SVG 文件。如果你想輸出多頁的 SVG,詳情可見本節的 PNG 部分。

svg("plots.svg")
plot(...)
dev.off()

相比於 PDF 文件,SVG 文件更易於矢量處理。

3、導出 PNG/TIFF 文件

PNG 和 TIFF 是位圖(或稱光柵圖像)的格式。在將它們放大后,我們能夠清楚的分辨出其中的像素點。

png("plot.png")
# or tiff("plot.tiff")
plot(...)
dev.off()

在默認的情況下,這類圖像的輸出大小為 480x480 素,分辨率為 72 dpi(6.66x6.66 英寸).
增加分辨率將會放大文本與圖像元素的大小,只是因為畫布元素的大小只與圖像的物理大小有關,而與圖像的像素大小無關。例如一個 12 像素點的字符原本高度為 12/72 = 1/6 英寸,在分辨率為 72dpi 的條件下,它共包含 12 個像素點,而當分辨率放大為 120dpi 時,它就含有 20 個像素點了。
下列操作將會創建一個大小為 480x240 像素的圖像,其分辨率為 120dpi,實際大小相當於 4x2 英寸。

png("plot.png", width=480, height=240, res=120)
plot(...)
dev.off()

如果我們想要輸出多幅圖像,那么我們就必須要執行一個新的png()命令,或是將%d置於文件名中:

png("plot-%d.png")
plot(...)
dev.off()

上述操作將會生成 plot-1.png, plot2.png 等一系列文件。

以上內容轉自 數析學院,原文后續還有涉及到如何導出文件至不支持 PDF 的程序(MS Office)、ggplot、由屏幕保存圖像等內容,有需要的同學可以直接查看原文


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com