目录

一、图形设备类型Graphic device

图形设备类型:

1、grDevices包

2、 R图形设备列表

3、本机可用图形设备

4、可选图形设备

二、绘图步骤

(一)屏幕显示

1、调用绘图函数

2、将图形显示在屏幕设备上

3、为图添加注释

(2)输出到文件设备

1、明确指明或启动图形设备

2、调用绘图函数进行绘图【需要注意的是,在屏幕上并不会显示绘制出的图形】

3、添加注释信息

4、使用dev.0ff()关闭图形设备

三、图形文件设备

(一)概述

1、常见的矢量文件格式:

2、常见位图文件格式【栅格】

(二)输出pdf举例

(三) ggsave函数

(四)pdf格式的特点说明

(五)输出SVG矢量文件

(六)输出位图文件(PNG/TIFF)通过png()打开PNG图形设备—》画图—》dev.off()

1、普通输出

2、批量输出

​编辑 3、输出高质量png(位图最常用的就是png格式)

(2)使用ggplot

四、同时打开多个设备

五、复制图形

1、dev.copy()

2、dev.copy2pdf()

3、注意事项

六、总结


一、图形设备类型Graphic device

基本的绘图的包:base、lattice、ggplot2

图形设备类型:
• 计算机上的窗口 (屏幕设备)
• pdf文件 (文件设备)
• PNG或JPEG文件 (文件设备)【矢量】
• 可缩放矢量图形 (SVG) 文件 (文件设备)【栅格】
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、可选图形设备
• cairo_pdf, cairo_ps:基于cairo图形的PDF和 PostScript格式图形
• svg:SVG 图形格式,基于cairo图形
• png:输出PNG 格式到文件
• jpeg:输出JPEG格式到文件
• bmp:输出 BMP 位图格式文件
• tiff:输出 TIFF 格式文件

二、绘图步骤

(一)屏幕显示

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矢量文件

扩展包svglite.
分别使用图形设备和ggsave来存储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)
Cairo包解决:CairoPNG(“myplot.png”),该函数虽然不保证字体能跨平台,但可以支持抗抖动和alpha通道;

四、同时打开多个设备

可以同时打开多个图形设备,但一次只能打印一个图形设备;

dev.cur()可找到当前活动的图形设备;

每个打开的图形设备都分配了一个从2开始的整数(没有图形设备1)。设备1就是窗口X11;
使用 dev.set(<integer>) 更改活动图形设备,其中<integer>是与要切换到的图形设备关联的数字;

五、复制图形

1、dev.copy()
可用于将绘图从一个设备复制到另一个设备。 例如,可以将绘图从屏幕设备复制到文件设备;
2、dev.copy2pdf()
函数的作用是将绘图从当前设备(通常是屏幕设备)复制到PDF文件。
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 
3、注意事项
复制一个图不是一个精确的操作,所以结果可能与原始的不相同

六、总结

• 必须在图形设备上创建图。
• 默认的图形设备几乎总是屏幕设备,这对于探索性分析非常
有用。
• 文件设备对于创建可以包含在其他文档中或发送给其他人的
打印非常有用。
• 对于文件设备,有矢量和位图格式
• 矢量格式适用于使用少量点的线条图和纯色打印
• 位图格式适用于具有大量点的打印,自然场景或基于网络的图

R图形设备【探索性数据分析学习日记10.17】相关推荐

  1. 2018.10.17考试

    2018.10.17考试总结 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关, ...

  2. 【10.17 牛客普及(一)】 牛牛的密码 题解

    [10.17 牛客普及(一)] 牛牛的密码 题解 题目 牛牛在注册不同的网站时,总是会使用不同的密码来保证他的账号安全. 为了保证他的密码强度,牛牛使用他的"字符串筛选器"来测试密 ...

  3. [UWP小白日记-10]程序启动屏(ios解锁既视感)

    [UWP小白日记-10]程序启动屏(ios解锁既视感) 原文:[UWP小白日记-10]程序启动屏(ios解锁既视感) 讲一下 微软爸爸的开发者大会2016又暴了个表达式动画和Windows.UI.Co ...

  4. Interview:算法岗位面试—10.17早上—上海某科技公司算法岗位(偏算法,独角兽)非技术面试之比赛项目讲解和项目意义的探讨

    Interview:算法岗位面试-10.17早上-上海某科技公司算法岗位(偏算法,独角兽)非技术面试之比赛项目讲解和项目意义的探讨 导读:今天某科技独角兽让我去面试,但是与另一家银行相冲突,先去了银行 ...

  5. Interview:算法岗位面试—10.17早上—上海某银行人工智能算法岗位(偏算法,四大行之一)技术面试之项目讲解和激活函数的选择

    Interview:算法岗位面试-10.17早上-上海某银行人工智能算法岗位(偏算法,四大行之一)技术面试之项目讲解和激活函数的选择 反思:面试的时候,不应该太急,要慢而有条理.稳而有逻辑.因为下午有 ...

  6. Java黑皮书课后题第10章:*10.17(平方数)找出大于Long.MAX_VALUE的前10个平方数。平方数是指形式为n^2的数

    例如,4.9以及16都是平方数,找到一种有效方法,使程序能快速运行 题目 破题 特别提醒 代码 题目 *10.17(平方数)找出大于Long.MAX_VALUE的前10个平方数.平方数是指形式为n^2 ...

  7. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> 10.15 iptables filter表小案例 iptables 命令.语法总结 iptables-nvL //查看ipt ...

  8. CakePHP 2.10.17 发布,PHP 快速开发框架

    CakePHP 2.10.17 发布了,CakePHP 是一个运用了诸如 ActiveRecord.Association Data Mapping.Front Controller 和 MVC 等著 ...

  9. 软件需求分析学习日记(一)需求工程概述

    软件需求分析学习日记(一)需求工程概述 文章目录 软件需求分析学习日记(一)需求工程概述 1.1需求工程的重要性 1.1.1几点说明和描述 1.1.2不适当的需求过程所引起的风险 1.2什么是软件需求 ...

  10. K8S部署蓝鲸开源bk-cmdb v3.10.17

    文章目录 1 组件安装(Linux) 1.1 Go 1.2 Nodejs 2 代码编译打包 2.1 代码编译 3 K8s部署cmdb 3.1 Redis 3.2 Zookeeper 3.3 Mongo ...

最新文章

  1. python基础教程书籍推荐-入门python有什么好的书籍推荐?
  2. C# HSSFWorkbook与XSSFWorkbook的区别和.xls和.xlsx的区别
  3. The SetStack Computer
  4. 关于SP一些响应码的API返回码及解析集合
  5. 前端学习(2672): vue3.0脚手架路由改变
  6. 破格晋升!一批高校教师脱颖而出
  7. 树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)
  8. 清除浮动php,CSS清除浮动
  9. leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
  10. 垃圾回收算法与实现系列-Java堆内存溢出原因
  11. python 艺术照片滤镜_Python实现PS滤镜Fish lens图像扭曲效果示例
  12. Linux下手动挂载新增磁盘
  13. 推荐 5 个优秀的 Javascript 图标库
  14. 万网域名如何设置显性url转发和隐性URL转发
  15. Mac pro M2芯片如何进入恢复模式
  16. MySQL总结(十一)子查询-详解
  17. 2017年保荐代表人胜任能力考试辅导教材 投资银行业务
  18. Ceph配置——5.Ceph-MON设置
  19. java.sql.SQLException: 无效的列类型: 1111 报错问题解决
  20. 商界大忌,你占了几条?

热门文章

  1. PHP微信简单分享组件
  2. JavaScript高级程序设计第四版学习--总结
  3. 天载杠杆炒股三大板指集体调整
  4. 使用Node.js制作爬虫教程(续:爬图)
  5. 使用SignalR 2进行服务器广播
  6. idea java debug调试快捷键_idea debug快捷键 快速查找类
  7. 认知计算、区块链IoT、物联网安全…看懂的人将控制未来
  8. Python入门教程 超详细1小时学会Python - 代码生活之家
  9. 生命可贵 废墟之下求生存
  10. PHPmysql在线网络教育平台66984-计算机毕业设计项目选题推荐(附源码)