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.rhkb.cn/news/307414.html

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

相关文章

谷歌推出适用于安卓设备的“Find My Device”网络,功能类似苹果Find My

谷歌今日推出了适用于安卓设备的“Find My Device”网络,其功能类似于苹果的“Find My”网络,旨在帮助用户定位丢失、被盗的安卓产品。 安卓的“Find My Device”网络可以利用数以亿计运行 Android 9 或更高版本的安卓设备,通过蓝牙信号追踪丢…

Windows联网状态工具TCPView

文章目录 TCPView命令行工具更多Sysinternals Suite工具 TCPView TCPView用于显示系统上所有 TCP 和 UDP 终结点的详细列表,包括本地和远程地址以及 TCP 连接的状态,界面如下。 列表的表头含义如下 表头含义表头含义Process name应用名称Process id进程…

【电控笔记6】电流回路+延迟效应

问题提出 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 可用示例程序 m2 2 1b 如下图画出开环系统的伯德图进行比较,如图 2-2-4 所示,由于延迟组件会侵蚀系统的相位,因此从图可以看出,加入延迟效应后,q轴电流回路的相位裕度(Phase Margin) 从…

最齐全,最简单的免费SSL证书获取方法——实现HTTPS访问

一:阿里云 优势:大平台,在站长中知名度最高,提供20张免费单域名SSL证书 缺点:数量有限,并且只有单域名证书,通配符以及多域名没有免费版本。并且提供的单域名证书只有三个月的期限。 二&#…

flask毕业设计选题管理系统python+django_96r19

本系统选择编程语言。Pymysql是封装了MySQL驱动的Python驱动一个能使Python连接到MySQL的库。Python语言官方规范访问数据库的统一接口规范(Python DB-API),防止在使用不同数据库时,由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以…

vue简单使用五(组件的使用)

目录 如何定义组件: 组件的命名: 父组件向子组件传值: 子组件向父组件传值: 如何定义组件: 全局组件定义: 局部组件定义: 组件的基本使用: 打印结果: 组件的命名&#xf…

2024妈妈杯数学建模A 题思路分析-移动通信网络中 PCI 规划问题

# 1 赛题 A 题 移动通信网络中 PCI 规划问题 物理小区识别码(PCI)规划是移动通信网络中下行链路层上,对各覆盖 小区编号进行合理配置,以避免 PCI 冲突、 PCI 混淆以及 PCI 模 3 干扰等 现象。 PCI 规划对于减少物理层的小区间互相干扰(ICI),增…

Attention注意力机制:理论基础、核心架构、应用领域及最新研究动态

Attention机制源于对序列建模中长期依赖关系的有效捕获需求,其理论基础在于让模型动态分配权重以聚焦于输入序列中与当前任务相关的关键部分。核心架构包括Query-Key-Value三元组计算、Softmax归一化的注意力得分、加权求和生成上下文向量,以及扩展至多头…

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 + 混合注意力机制 + 提及-邻居上下文建模

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 混合注意力机制 提及-邻居上下文建模 提出背景SMedBERT 具体到点的设计逻辑SMedBERT的背景SMedBERT的工作原理 SMedBERT 具体实现细节3.1 符号和模型3.2 Top-K Entity Sorting3.3 提及-邻居混合注意力3.4 提及-邻居…

Excel/WPS超级处理器,提取汉字/字母/数字

在职场工作中,经常会遇到单元格中有汉字,数字,字母三者的自由组合,但往往只需要其中的一者,如何快速提取呢,超级处理器,提供了4个功能可选。 超级处理器下载与安装 1)分离字符 将…

模板进阶 | 非类型模板参数 | 类模板的特化 | 模板的分离编译 | 模板的优缺点

非类型模板参数 我们可以认为非类型模板参数就是一个常量&#xff0c;在我们的类里面我们是不能对它进行改造 为什么会有这样的场景&#xff0c;其次就是C语言那里我们一般使用什么。 场景1 #include<iostream> using namespace std;#define N 10 template<class T…

三天做完pandas数据分析50题第一天

三天做完pandas数据分析50题第一天 第1题 将python的list转换为Series第2题 将字典转换为Series第3题 将Series转换成python的list第4题 使用numpy创建series。第5题 如何为Series添加新的元素&#xff1f;第6题 使用字典创建DataFrame第7题 给DataFrame设置索引列第8题 生成一…

初学python记录:力扣2923. 找到冠军 I

题目&#xff1a; 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &…

windows 之 redis非安装版,启动与初始化密码

1、下载redis 免安装版 2、解压后&#xff0c;启动服务 3、双击客服端 4、设置密码 config set requirepass root123456成功后&#xff0c;退出服务再次双击 5、登录 再次执行命名时已经没权限了 使用 auth password 登录 成功后&#xff0c;就可以了 auth root123456 …

第三次作业

创建了一个教务管理系统的登录页面&#xff0c;其中包含左侧的图片以及右侧的表单容器&#xff0c;当鼠标悬停在表单容器上时&#xff0c;会稍微变大&#xff0c;并且图片容器会相应的缩小&#xff0c;是通过css的transition以及fiex属性实现。 表单容器包含用户名和密码的输入…

LeetCode-62. 不同路径【数学 动态规划 组合数学】

LeetCode-62. 不同路径【数学 动态规划 组合数学】 题目描述&#xff1a;解题思路一&#xff1a;动态规划&#xff0c;动规五部曲解题思路二&#xff1a;动态规划&#xff08;版本二&#xff09;解题思路三&#xff1a;数论 题目描述&#xff1a; 一个机器人位于一个 m x n 网…

30元腾讯云服务器搭建幻兽帕鲁Palworld多人联机游戏,畅玩

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

逆向案例十六——简单webpack逆向,财联社信息

网址链接&#xff1a;财联社A股24小时电报-上市公司动态-今日股市行情报道 数据包sign参数为加密&#xff0c;可以直接搜索找参数的位置&#xff0c;搜索不到的情况下&#xff0c;在断点跟栈&#xff1a; 确定js文件所在位置&#xff0c;并打上断点。 点击加载刷新页面。可以发…

服务器代理

服务器代理 配置&#xff1a;64G内存1 3090&#xff08;24g&#xff09;1P4000&#xff08;8g&#xff09; SSH连接 工作路径&#xff1a;/home/ubuntu/workspace/python Anaconda路径&#xff1a;/home/Ubuntu 1.在工作路径下创建自己的文件夹作为workspace 2.以用户ubunbtu登…

AIGC的崛起:定义未来内容创作的新纪元

&#x1f31f;文章目录 &#x1f31f;AIGC简介&#x1f31f; AIGC的相关技术与特点&#x1f31f;AIGC有哪些应用场景&#xff1f;&#x1f31f;AIGC对其他行业影响&#x1f31f;面临的挑战与问题&#x1f31f;AIGC未来发展 &#x1f31f;AIGC十大热门网站推荐&#xff1a; 文心…