2017-01-26 17:23:55
图形的呈现媒介,基础的绘图设备驱动包含在grDevices包中
windows()
quartz()
x11()
pdf()
, jpg()
, …svglite()
, Cairo包的CairoPDF()
pdf
: 便携性、缩放性较好,适用于线条图。图形元素一般不宜过多svg
: 基于XML的可缩放矢量图形(scalable vector graphics),对于动画和交互图(如d3)支持良好,适用于浏览器win.metafile
: Windows metafile 格式 (仅限Windows)postscript
: 较旧的矢量图格式,用于打印机png
: 使用无损压缩的位图,多数浏览器支持良好,可以绘制大量散点、线条和色块。缩放性一般jpeg
: 使用有损压缩的位图,多数操作系统支持良好,适合用于照片,绘制线条效果一般。缩放性一般。tiff
: tiff格式位图,支持无损压缩bmp
: Windows内建的位图格式plot
/ lattice::xyplot
/ ggplot2::ggplot
library(datasets) with(faithful, plot(eruptions, waiting)) ## 出图到屏幕 title(main = "Old Faithful Eruptions") ## 加工
pdf()
/ png()
plot
/ lattice::xyplot
/ ggplot2::ggplot
,这时屏幕上不再出图dev.off()
)pdf(file = "old_faithful.pdf") ## 打开一个pdf设备,在工作目录下创建'old_faithful.pdf' with(faithful, plot(eruptions, waiting)) ## 出图到pdf设备 title(main = "Old Faithful Eruptions") ## 加工标题 dev.off() ## 关闭该pdf设备
dev.list()
dev.cur()
dev.next()
, dev.prev()
dev.set(<序号>)
写了很多代码作出一张满意的图,但出在了屏幕上,想把它出到pdf。不想重新敲一遍代码,有什么快捷的办法?
dev.copy
: 将图形元素从一个设备拷贝到另一个
dev.copy2pdf
: 拷贝到pdf设备dev.copy2eps
: 拷贝到eps设备dev.print
: 将当前设备上的图拷贝到另一个设备library(datasets) with(faithful, plot(eruptions, waiting)) ## 屏幕出图 title(main = "Old Faithful Geyser data") ## 加标题 dev.copy(png, file = "geyserplot.png") ## 拷贝到pdf设备 dev.off() ## 不要忘记关闭设备
绘图系统(plotting system)是用于驱动生成图形的绘图框架。R最重要的绘图系统有:
plot
plot(mtcars$mpg, mtcars$disp) title("Scatter plot of mpg vs disp") abline(lm(disp~mpg, data=mtcars), col='red')
xyplot
, bwplot
library(lattice) state <- data.frame(state.x77, region = state.region) xyplot(Life.Exp ~ Income | region, data = state, layout = c(4, 1))
library(ggplot2) state <- data.frame(state.x77, region = state.region) ggplot(state, aes(Income, Life.Exp)) + geom_point() + facet_grid(.~region)
Thank you!