目录
2、调用绘图函数进行绘图【需要注意的是,在屏幕上并不会显示绘制出的图形】
(六)输出位图文件(PNG/TIFF)通过png()打开PNG图形设备—》画图—》dev.off()
一、图形设备类型Graphic device
基本的绘图的包:base、lattice、ggplot2
图形设备类型:
1、grDevices包
包:grDevices,是R中定义图形设备和提供颜色和字体支持的工具包
library(help="grDevices")
grDevices的版本应该与R的版本一致,没有版本相同的包时,找寻临近版本的包即可。
2、 R图形设备列表
?Devices
列出的是该本的R支持的图形设备类型,运行结果如下,可以看出,该版本(4.2.1)R支持的图形设备类型有:窗口、pdf矢量图形、bitmap位图栅格图形等。
3、本机可用图形设备
windows:
On Windows only, the graphics device for Windows (on screen, to printer and to Windows metafile).意思是可以直接使用打印设备打印出来;
pdf、postscript指的是可以以文件的形式导出。postscript即ps格式。pdf不会失真。
xFig:输出XFIG格式文件;
pictex:像素图,即栅格数据。
4、可选图形设备
二、绘图步骤
(一)屏幕显示
1、调用绘图函数
2、将图形显示在屏幕设备上
3、为图添加注释
例子:
attach(faithful)
plot(eruptions,waiting)
(2)输出到文件设备
1、明确指明或启动图形设备
2、调用绘图函数进行绘图【需要注意的是,在屏幕上并不会显示绘制出的图形】
3、添加注释信息
4、使用dev.0ff()关闭图形设备
例子:
setwd("C:/Users/86178/Desktop/EDA/课后练习/10.17")#注意不要忘记首先设置当前目录,否则生成的图形会保存到默认的安装目录下
pdf(file="Rplot1.pdf") #打开pdf图形设备,要生成的图片的名字命名为Rplot1.pdf
with(faithful, plot(eruptions, waiting))#开始绘制
title(main = "Old Faithful Geyser data")#给图片添加注释
dev.off()#注意,在绘制完成后一定要记得关闭图形设备,否则,生成的pdf文件大小将为0
setwd("C:/Users/86178/Desktop/EDA/课后练习/10.17")#注意不要忘记首先设置当前目录,否则生成的图形会保存到默认的安装目录下
pdf(file="Rplot2.pdf") #打开pdf图形设备,要生成的图片的名字命名为Rplot1.pdf
with(faithful, plot(eruptions, waiting))#开始绘制
title(main = "Old Faithful Geyser data")#给图片添加注释
三、图形文件设备
(一)概述
两种基本类型的文件设备:矢量vector和位图(栅格)bitmap;
1、常见的矢量文件格式:
(1)pdf:首选、调整大小、线条类型较好;多个点,则效率不高;因为pdf内部存储的是画图指令。
(2)svg:动画和可交互性,基于XML的可伸缩矢量图形;基于web的图
(3)win.metafile: windows元文件格式
(4)postscript:即ps,方面调整大小,但win系统通常不带有ps查看器
2、常见位图文件格式【栅格】
(1)png:无损压缩、适用于绘制很多点,不便于调整大小;线条图或纯色图像
(2)jpeg:有损压缩,适用于照片等自然场景,适用于绘制很多点,不便于调整大小;不适用于线条图
(3)tiff:TIFF格式的位图文件;无损压缩;卫星影像;
(4)bmp:windows位图格式(bitmap位映射)
(二)输出pdf举例
pdf("mtcars1.pdf", width = 4, height = 4)
plot(mtcars$wt, mtcars$mpg)
library(ggplot2)
print(ggplot(mtcars,aes(wt,mpg))+geom_point())
dev.off()
null device
1
打开一个图形设备之后,连续绘制两张图片后再dev.off()关闭,则图形设备中有两张图片被保存了下来;绘制多个图,则每张图片保存在一页中;
#图纸的默认尺寸单位是英寸,若想按厘米输出,需要手动转换。
# 8x8 cm 1px=2.54cm
pdf("myplot.pdf", width = 8/2.54, height = 8/2.54)
下面采用ggplot2包中的函数进行绘图:
(三) ggsave函数
不支持保存多页图片;可以直接指定单位为cm,不用进行单位的换算
并不是图形设备,只是普通的图片保存函数,不需要dev.off()
> plot1 <- ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point()
> ggsave("myplot5.pdf", plot1, width = 8, height = 8, units = "cm")
(四)pdf格式的特点说明
特点:打印输出,最佳选择
最容易与LaTex结合
矢量输出,文件远小于位图
记录的是绘图指令
点过多,pdf文件可能会很大
(五)输出SVG矢量文件
library(svglite)
> svglite("myplot6.svg", width = 4, height = 4)
> plot(mtcars$wt, mtcars$mpg)
> dev.off()
RStudioGD
2
> ggsave("myplot66.svg", width = 8, height = 8, units = "cm")
(六)输出位图文件(PNG/TIFF)
通过png()打开PNG图形设备—》画图—》dev.off()
1、普通输出
默认的分辨率是72ppi(72像素每英寸px),适合于屏幕显示,打印输出质量较差。
png("myplot7.png", width = 400, height = 400)
> plot(mtcars$wt, mtcars$mpg)
> dev.off()
RStudioGD
2
2、批量输出
在文件名中加入%d,可以实现批量输出;
png("myplot-%d.png", width = 400, height = 400)
> plot(mtcars$wt, mtcars$mpg)
> print(ggplot(mtcars, aes(x = wt, y = mpg)) +
+ geom_point())
> dev.off()
R
3、输出高质量png(位图最常用的就是png格式)
(1)使用图形设备
ppi <- 300
> png("myploth.png", width = 4*ppi, height = 4*ppi, res = ppi)
> plot(mtcars$wt, mtcars$mpg)
> dev.off()
RStudioGD
2
(2)使用ggplot
可以直接指定单位,dpi即像素;
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()
> ggsave("myggplot.png", width = 8, height = 8, unit = "cm",
+ dpi = 300)
四、同时打开多个设备
可以同时打开多个图形设备,但一次只能打印一个图形设备;
dev.cur()可找到当前活动的图形设备;
五、复制图形
1、dev.copy()
2、dev.copy2pdf()
with(faithful, plot(eruptions, waiting))
> ## 添加主标题
> title(main = "Old Faithful Geyser data")
> ## Copy 当前图到png 文件
> dev.copy(png, file = "geyserplot.png")
png
4
> dev.copy2pdf(file = "geyserplot.pdf")
Error in dev.copy2pdf(file = "geyserplot.pdf") : 只可以从屏幕装置打印
> ## 别忘记关闭设备
> dev.off()
RStudioGD
2
> dev.copy2pdf(file = "geyserplot.pdf")
RStudioGD
2