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

2023-11-05 19:10

本文主要是介绍R图形设备【探索性数据分析学习日记10.17】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、图形设备类型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】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/351913

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为