R语言数据可视化:基本绘图系统

目录

plot函数

par函数

hist函数

boxplot函数

plot函数应用实战

全局参数

R语言中有三大绘图系统包括基本绘图系统,Lattice绘图系统,ggplot2绘图系统

基本绘图系统

在R语言中,以下函数通常用于创建和定制图形:

  1. plot

函数:用于生成基本的二维散点图或线图。它可以用于展示两个变量之间的关系,或者多个数据集在同一图形上的比较。

  1. hist

函数:用于生成直方图,这是一种展示数据分布的图形。直方图可以快速揭示数据的分布情况,包括集中趋势、离散程度和异常值。

  1. boxplot

函数:用于生成箱线图,这是一种用于展示数据分布和比较不同数据集的图形。箱线图可以显示数据的中位数、四分位数和异常值。

  1. points

函数:用于在已有的图形上添加点。这可以用来突出显示特定的数据点或在图形上标记特定的值。

  1. lines

函数:用于在图形上添加直线。这通常用于连接散点图中的点,创建趋势线,或在其他类型的图形中添加额外的线元素。

  1. text

函数:用于在图形上添加文本。这可以用来标记特定的点、添加注释或显示额外的信息,如标题或标签。

  1. title

函数:用于给图形添加标题。这有助于解释图形的内容,使观看者能够理解图形所表示的数据和信息。

  1. axis

函数:用于添加或定制坐标轴。这可以包括设置轴标签、轴范围、刻度和刻度标签等。

plot函数

plot函数中有很多参数,但是只有两个参数也就是x和y是必须的,其余比较重要的函数有xlab,ylab,他们用来给x轴和y轴添加标签,lwd用来指定线宽,lty用来指定划线的类型(比如是实线还是虚线),pch用于指定点的形状,比如画点是用的实心还是空心还是三角形等等。pch的取值有很多,每一个值都对应一种不同的点的类型。col就是color的缩写,用来指定颜色。

par函数

这个函数用于设置全局参数,这个设置会作用于R中所有的plot绘图。

这个函数有很多的参数,比如

  1. bg 参数:用于设置图形背景颜色。您可以传递一个颜色名称或颜色代码,如 "white"、"black"、"blue" 或十六进制颜色代码,来改变整个图形区域的背景颜色。
  2. mar 参数:用于设置图形边缘的大小。这是一个数值向量,通常包含四个元素,分别代表图形设备左、下、右、上边缘的行数。增加 mar 的值可以增加图形周围的空白区域,减少则可以使图形更紧凑。
  3. las参数:用于控制坐标轴标签的方向。值可以是0、1、2或3,分别代表不同的标签方向:
    • 0:标签总是平行于轴线(默认)。
    • 1:标签总是水平的。
    • 2:标签总是垂直于轴线。
    • 3:标签总是垂直的,但与0相反的方向。
  1. mfrow 参数:用于设置图形输出的行数和列数。这是一个可选参数,当您希望在一个图形窗口中绘制多个图形时非常有用。例如,mfrow=c(2,2) 会将图形输出分为两行两列,总共四个绘图区域。
  2. mfcol 参数:与 mfrow 类似,但它用于设置图形输出的列数和行数。例如,mfcol=c(2,2) 会创建一个两列两行的图形布局。

使用 par 函数时,可以单独设置这些参数,也可以将它们组合在一个包含所有设置的列表中传递给 par 函数。例如:

par(bg="lightblue", mar=c(5, 4, 4, 2), las=1)

这将设置背景颜色为浅蓝色,左边缘为5行高,下边缘和右边缘为4行高,上边缘为2行高,并将坐标轴标签设置为水平方向。

下面来举几个例子:

还是以airquality这个数据集为例

hist函数

使用hist函数生成一个直方图,直方图是柱状图的一种,用于展示数据集中某个变量在不同区间内取值的频数

这个直方图展示的是Wind这一列的内容,横轴是一个个等长的区间,纵轴是频数,可以直观地观察到各个区间内wind变量取值的频数

由于我们没有在创建直方图的时候指定xlab参数,因此hist函数就把参数当成了横轴标签

boxplot函数

我们再使用boxplot(airquality$Wind)这句代码绘制一个箱线图,箱线图可以让我们直观地观察到数据集中的Wind变量取值的分布情况,可以看到在我们没有指定xlab,ylab等参数的时候x轴什么也没有,我们知道x轴的标签表示的应该是Wind,y轴的数值表示的是风速,因此我们可以引入参数xlab和ylab

把代码改成这样的boxplot(airquality$Wind,xlab="Wind",ylab="speed"),此时绘制的箱线图是这样的

前面我们讲过箱线图不仅能够表示一个变量取值的分布情况,还可以利用并排箱图直观地反应一个分类变量和一个数值变量的关系。如果我们要看不同月份的时候风速的分布情况,代码可以这样写boxplot(Wind~Month,airquality,xlab="Month",ylab="speed"),运行结果如图

来解释一下这个代码,这个~在R语言中的功能通常是分割响应变量和解释变量,响应变量也就是我们俗称的因变量,解释变量也就是我们所说的自变量。这句代码中Wind~Month指明了响应变量是Wind,解释变量是Month,然后第二个参数告诉boxplot函数要操作的数据集是airquality,通过下面的图可以看出风速在七月份比较低,五月份比较高。

下面我对R语言中一些~的常用功能汇总

在R语言中,符号 ~ 通常用作公式(formula)的分隔符,它用来分隔响应变量和解释变量。这个符号在数据框(data frames)、统计模型和图形函数中都非常常见。如果是在绘图函数中的参数中遇到~,那么他一定是用于指定y轴和x轴代表的含义。以下是 ~ 符号的一些主要用途:

  1. 数据框和数据库查询
    • 在数据框中,~ 可以用来引用数据框中的列。例如,dataframe~column1 表示数据框 dataframe 中名为 column1 的列。
    • 在数据库查询中,~ 用于模糊匹配列名。例如,SELECT ~column FROM table 会匹配 table 中所有以 column 开头的列。
  1. 统计模型
    • 在建立统计模型时,~ 用于指定模型的左侧为响应变量(因变量),右侧为解释变量(自变量)。例如,在线性模型 lm(y ~ x, data) 中,y 是响应变量,x 是解释变量,而 data 是包含这些变量的数据框。
  1. 图形函数
    • 在图形函数中,如 plot()、boxplot() 等,~ 用于指定x轴和y轴的关系。例如,plot(x ~ y, data) 会根据 data 数据框中的 x 和 y 列绘制散点图。
  1. 逻辑运算
    • 在逻辑运算中,~ 用作逻辑非运算符。例如,!condition 和 condition ~ FALSE 在逻辑上是等价的,都表示条件 condition 为假的情况。
  1. 宏替换
    • 在编写宏或使用模式匹配时,~ 可以用来转义特殊字符,使其不被当作模式匹配的一部分。

plot函数应用实战

plot函数用于绘制散点图,他的两个必要参数第一个是x,第二个是y,也就是横纵坐标。

比如我们想看看airquality这个数据集中Wind与Temp的关系,可以这样写代码plot(airquality$Wind,airquality$Temp),运行结果如图,从图中来看风速和温度似乎存在着一种负相关的关系。

当然在绘制这个图的时候为了让plot函数明确的知道Wind和Temp这两个来自于airquality这个数据集,我们在他们两个的前面都加上了airquality$,这种写法虽然能够很好的完成任务,但是好像让代码看起来有些冗余,我们还可以以一种更简洁的方式来写这个代码,比如with(airquality,plot(Wind,Temp)),with函数的第一个参数指定你想要在其上执行操作的数据源,后面的参数就是对这个数据源中的一些变量进行的操作,这里我们是对airquality这个数据源中的Wind变量和Temp变量进行绘制散点图的操作,以这种方式绘制的散点图与上面的图基本类似,但是在横轴和纵轴标签上有些许差异,就是少了airquality$

如果想要给这个图添加上一个标题,可以在plot函数中引入参数main,比如with(airquality,plot(Wind,Temp,main="wind and temp"))

还可以使用title函数给当前画图板上的图加上一个标题,比如title("wind and temp"),title参数不止可以添加主标题,也可以添加xlab和ylab,他的函数原型如下title(main = "title", xlab = "x-axis label", ylab = "y-axis label", ...)

如果我们在plot函数中再引入一个参数type="n",运行结果就是这样的一个图

在R语言中,plot 函数的 type 参数用于指定绘制图形的类型。当使用 type="n" 时,这个参数告诉R创建一个没有数据点的图形框架,也就是说,它仅绘制坐标轴和标题,但不显示任何数据点或线条。

这种用法通常是一个准备工作,让你能够手动添加数据点或其他图形元素。例如,你可能首先用 type="n" 创建一个图形框架,然后使用 points 函数添加散点图数据,或者使用 lines 函数添加线图数据。这样做可以让你更细致地控制图形的外观和布局。

在代码 with(airquality, plot(Wind, Temp, main="wind and temp", type="n")) 中,type="n" 创建了一个空的图形框架,其中 Wind 和 Temp 是 airquality 数据框中的两列,main="wind and temp" 设置了图形的标题。由于使用了 type="n",所以不会有数据点被自动添加到图形中,你需要后续使用 points 或其他函数来显示数据。

比如我们只想要画九月份的风速,可以这样写with(subset(airquality,Month==9),points(Wind,Temp,col="red")),结果如图

同理我们还可以使用下面的代码来绘制这样的图,把五月份的wind与temp的散点图用蓝色表示,6,7,8月份的wind与temp的散点图用黑色来表示

注意到在绘制六七八月份的散点图的时候我们并没有使用三句代码,这是因为不同于前面两句的Month用==指定月份,6,7,8月份的散点图在绘制的时候指定Month使用了一个特殊的符号%in%,在R语言中,%in% 是一个逻辑操作符,用于检查左边的表达式是否存在于右边的集合中。当左边的表达式是右边集合的成员时,返回 TRUE,否则返回 FALSE。这个操作符通常用于向量化的逻辑测试,可以快速地对向量或列表中的元素进行成员资格检查。因此Month%in%c(6,7,8)就会在Month的取值为6,7,8这三个数的时候返回TRUE,此时plot函数就可以绘制他们的wind与temp的散点图了。

自此我们完成了不同月份wind与temp的散点图使用不同颜色绘制的任务,如果我们想要在图中加一条回归线用它来拟合现在的数据。要做到这一点需要两步,首先要拟合一个模型,这里拟合模型使用的函数叫lm,用于创建线性拟合线性模型,代码这样写fit

但是此时这幅图还有一个问题,就是虽然我们针对不同月份使用了不同颜色的散点,但是对于读者来讲,他们并不知道这些颜色分别代表哪些月份,因此我们还应该在这幅图中加上一些注释标签(图例),legend("topright",pch=1,col=c("red","blue","black"),legend=c("Sep","May","other"))这句代码表示在右上方加上图例,我来详细解释一下这句代码:

legend 函数用于在图形上创建一个图例,以帮助解释图中的符号、颜色或其他图形元素的含义。下面是对这段代码的详细解释:

  1. "topright":这个参数指定了图例的位置。在这个例子中,图例将被放置在图形的右上角。
  2. pch=1:pch 参数代表图形符号的类型。值 1 表示使用圆圈作为点的形状。
  3. col=c("red","blue","black"):col 参数定义了不同图形符号的颜色。在这个例子中,有三个颜色被定义:红色、蓝色和黑色。这些颜色将与 legend 参数中定义的标签相关联。
  4. legend=c("Sep","May","other"):这个参数定义了图例中每个颜色或符号所代表的标签。在这个例子中,有三个标签:"Sep"(代表9月),"May"(代表5月),和 "other"(代表其他月份或类别)。

因此legend("topright", pch=1, col=c("red","blue","black"), legend=c("Sep","May","other")) 这段代码将在图形的右上角添加一个图例,其中包含三种不同颜色的圆圈,分别对应于 "Sep"、"May" 和 "other" 这三个类别。这有助于图形的观看者理解图中不同颜色的点代表的具体含义。

全局参数

使用函数par可以设置全局参数,比如:

par("bg"),设置背景板颜色,默认是白色

par("col"),设置绘图的点或线的颜色,默认是黑色

par("mar"),设置图像距离四个边界的距离,顺序是下左上右,可以看到默认是这样的

par("mfrow"),设置一个画板中能画几幅图,且按照行的方式进行填充

全局参数 mfrow 是用于控制图形布局的参数之一。当你在创建多个图形并且希望它们在同一个图形窗口中按照行和列的方式排列时,mfrow 参数非常有用。

mfrow 是一个包含两个元素的向量,第一个元素指定行数,第二个元素指定列数。当你设置了 mfrow 参数后,接下来的图形将会按照这个布局进行排列。例如,如果你设置 mfrow=c(2,2),那么接下来的图形将会被排列成2行2列的格式。

这个参数是 par() 函数的一部分,par() 函数用于设置或查询图形参数的多个全局设置。例如:

par(mfrow=c(2,2))

plot(1:10, rnorm(10))

plot(1:20, rnorm(20))

在这个例子中,两个图形将会被放置在同一个窗口中,按照2行2列的布局排列。第一个图形占据第一行的两个位置,第二个图形占据第二行的两个位置。如图

请注意,mfrow 的设置会影响所有接下来的图形,直到它被改变或者图形设备被关闭。如果你想恢复到默认的图形布局,可以将 mfrow 设置为 c(1,1),或者创建一个新的图形设备来开始一个新的布局。

与mfrow非常相似的一个全局参数是mfcol,他的功能与mfrow非常相似,也是用来设置一个画图板可以画几幅图,唯一的区别是mfcol设置的排版是按照列的方式来填充的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络通信三要素:IP、端口和协议

IP:设备在网络中的地址,是唯一的标识 IP:全程”互联网协议地址“,是分配给上网设备的唯一标志 IP地址有两种形式: IPv4:32位 IPv6:共128位。分成8段表示,每取四位编码成一个16进制…

分布式技术---------------消息队列中间件之 Kafka

目录 一、Kafka 概述 1.1为什么需要消息队列(MQ) 1.2使用消息队列的好处 1.2.1解耦 1.2.2可恢复性 1.2.3缓冲 1.2.4灵活性 & 峰值处理能力 1.2.5异步通信 1.3消息队列的两种模式 1.3.1点对点模式(一对一,消费者主动…

机器学习——模型评价

概述 在机器学习中,模型评价是评估和比较不同模型性能的关键步骤之一。它是通过对模型的预测结果与真实标签进行比较,从而量化模型的预测能力、泛化能力和稳定性。模型评价旨在选择最佳的模型,理解模型的行为,并为模型的改进提供…

Synchronized简述

1.了解Synchrozied Synchrozied是一种悲观锁,通过Synchroized实现同步机制,在操作数据时,判断该对象是否被锁定,如果被锁定则进入阻塞状态直到被占用的线程释放,如果没有被锁或者当前线程已经存在操作对象的锁则进行上…

SpringBoo利用 MDC 机制过滤出单次请求相关的日志

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1.前言 2.MDC 是什么 3.代码实战 4.总结 1.前言 在服务出现故障时&#xff…

【功能更新】强化知识库管理与AI问答机器人性能

三月HelpLook带来了3大类功能焕新,主要聚焦于:知识库的管理功能升级和AI问答机器人的优化,让我们看看更新了哪些新功能! 那么,接下来就让我们来详细了解一下本次升级都带来了哪些新功能吧! 知识库使用与管理…

【Linux】应用层协议:HTTP

URL 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求和响应的格式应该是什么?如何读到一个完整的报文?支持的运算符…

【路径规划】基于六次多项式的多关节机器人避障路径规划

最近迷上了机械臂避障轨迹规划,因为之前一直做的都是无障碍物轨迹规划,所以这次想试一下有障碍物的,把避障算法用在我的SimMechanics机械臂上,看看效果咋样。以下定义不区分路径规划和轨迹规划。   by the way,本文实…

二叉树的定义和基本术语及性质

二叉树是一种特殊的树形数据结构,它对每个节点的子节点数进行了限制,即每个节点最多有两个子节点。这种结构使得二叉树成为了许多算法和数据结构的基础,如二叉搜索树、堆、哈夫曼编码等。本文将详细探讨二叉树的定义、基本术语和性质&#xf…

BGP扩展知识总结

一、BGP的宣告问题 在BGP协议中每台运行BGP的设备上,宣告本地直连路由在BGP协议中运行BGP协议的设备,来宣告通过IGP学习到的未运行BGP协议设备产生的路由;(常见) 在BGP协议中宣告本地路由表中路由条目时,将…

DNF手游攻略:2024新手攻略大全

在《DNF手游》的世界中,前期阶段对于新手玩家来说至关重要。以下是一份综合整理的新手攻略,帮助玩家快速适应游戏并取得进展。 1. 角色建立策略: 在前期,建议玩家建立3个角色,包括1个大号和2个小号。大号可以根据个人喜…

谷歌google浏览器无法更新Chrome至最新版本怎么办?浏览器Chrome无法更新至最新版本

打开谷歌google浏览器提示:无法更新Chrome,Chrome无法更新至最新版本,因此您未能获得最新的功能和安全修复程序。点击「重新安装Chrome」后无法访问此网站,造成谷歌浏览器每天提示却无法更新Chrome至最新版本。 谷歌google浏览器无…

SaaS知识库哪些比较好用?中小企业也能适用

在快节奏的商业世界中,拥有一个高效、易于使用的知识管理工具是提升工作效率的关键。对于中小企业来说,选择合适的SaaS(软件即服务)知识库平台尤为重要,因为它不仅能帮助员工快速找到信息,而且还能优化客户…

数据结构进阶之堆

今天我们学习的是数据结构里面的堆,大家先看看我们今天要学习的内容 一、堆概念及认识 在学习堆之前我们得先明白完全二叉树是什么样子,因为堆是依据完全二叉树的结构来实现的,所以在这里我先告诉大家完全二叉树的是什么,如下图…

Excel中输入数字会改变怎么办?

一、数字显示不全,以“#”号代替 随着列宽的缩小,数字逐渐被“#”号代替(首先数字的格式是“数值型,且只有整数”) 原因分析:单元格中的数字无法完全显示,Excel会自动用“#”号填充剩余的空间 解…

00_如何使用国内镜像源下载QT

如何使用国内镜像源下载QT 如何使用国内镜像源下载QT 如何使用国内镜像源下载QT 第一步:下载下载qt online installer 网站:https://download.qt.io/official_releases/online_installers/ 添加链接描述 下载windows版本 第二步: 剪切放…

搭建个人智能家居 4 -WS2812B-RGB灯

搭建个人智能家居 4 - WS2812B-RGB灯 前言说明ESPHomeHomeAssistant 前言 上一篇文章我们已经完成了第一个外设的添加(一个LED灯),今天接着来“壮大”这个系统,添加第二个外设“RGB灯”。 环境搭建可以回顾前面的文章。前文回顾&…

AutoCAD 2024 安装注册教程

前言 大家好,我是梁国庆。 本篇分享的安装包是 AutoCAD 的全新版本——AutoCAD 2024,下文安装教程中简称 AutoCAD。 时间:2024年4月8日。 获取 AutoCAD 安装包 我已将本篇所使用的安装包打包上传至百度云,扫描下方二维码关注…

Linux 内核学习(1) --- 时钟子系统

标题 时钟系统说明时钟树Clock Provider时钟通用数据结构clock_device 的注册clock_provider DTS配置和注册clock consumer时钟系统总结 时钟系统说明 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波…

windows本地运行dreamtalk踩坑总结

dreamtalk是一个语音图片转视频的一个工具,就是给一段语音加一个头像图片,然后生成一段头像跟语音对口型的视频,其实还是很有意思的,最近阿里发布了一个类似的模型,但是还没开源,从展示视频看,阿…