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

news2024/11/25 0:56:54

目录

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.coloradmin.cn/o/1591525.html

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

相关文章

ansible的常见用法

目录 ##编辑hosts文件 ##copy模块##复制过去 ##fetch模块##拉取 ##shell模块 ##好用 ##command模块## ##file模块### ##cron模块### ##crontab 计划任务 ##下载好时间插件 ##script模块 ##yum模块## ##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo ##ser…

时间序列分析 # 平稳性检验和ARMA模型的识别与定阶 #R语言

掌握单位根检验的原理并能解读结果;掌握利用序列的自相关图和偏自相关图识别模型并进行初步定阶。 原始数据在文末!!! 练习1、根据某1971年9月-1993年6月澳大利亚季度常住人口变动(单位:千人)的…

MySQL 嵌套查询

嵌套查询 是指在一个完整的查询语句之中,包含若干个不同功能的小查询;从而一起完成复杂查询的一种编写形式。包含的查询放在()里 , 包含的查询出现的位置: 位置含义SELECT之后把查询结果作为表头使用FROM…

ubuntu20.04.3挂载共享文件夹

VMware设置win共享文件夹 在linux执行挂载命令 sudo vmhgfs-fuse /mnt/hgfs/ -o nonempty这样就可以用管理员访问/mnt/hgfs/share

场景:如何做数据清理

如果数据清理简单粗暴按时间进行清理,同时时间字段并没有增加索引就会出问题 如果没有增加索引,他就会进行全表扫描,并且会给全表的数据上一个x锁 会阻塞其他的线程 解决方案参考阿里云DMS数据清理方案 这个SQL查询的目的是从名为table_hol…

2024年mathorcup数学建模思路及论文助攻

题目C题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图1是一个简化的物流网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同流向进行分拣并发往下一个场地,最终使包裹到达消费者…

Towards Street-Level Client-Independent IP Geolocation(2011年)(第一部分)

被引次数:306 Wang Y, Burgener D, Flores M, et al. Towards {Street-Level}{Client-Independent}{IP} Geolocation[C]//8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11). 2011. Abstract 一个高度精确的客户端独立的地理定位服务将是互联…

电商广告中的OCPC是什么?OCPC原理是什么?

1.定义: OCPC是指optimized cost per click(以目标转化为优化方式的点击出价),本质还是按照cpc付费。 2.三大特点:抢流量、避免无效流量、提高转化; 3.放量原理: 通过捕捉用户行为、行业数据…

数组算法——查询位置

需求 思路 使用二分查找找到第一个值,以第一个值作为界限,分为左右两个区间在左右两个区间分别使用二分查找找左边的7,:找到中间位置的7之后,将中间位置的7作为结束位置,依次循环查找,知道start>end,返回…

股票价格预测 | Python使用LSTM预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 Python使用LSTM预测股票价格 代码设计 import pandas as pd import matplotlib.pyplot as plt import numpy as np import tensorflowfrom numpy import

mui和uniapp跳转外部链接

Hbuilder开发的app&#xff0c;会涉及到跳转H5页面 mui <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno" /><link …

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…

浮点数加减运算、强制类型转换

目录 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a;1、对阶2、尾数加减3、规格化&#xff08;左规和右规&#xff09;4、舍入5、判断溢出 三、数据类型转换 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a; 1、对…

Suno AI

Suno is the latest big name in AI, but what is it? Keep reading to learn everything you need to know about Suno AI, including what it is, what it can do, and how much it costs. Suno AI是一款由Anthropic公司开发的人工智能音乐生成器&#xff0c;它利用先进…

C语言什么是指针? 什么是指针变量?

一、问题 指针是 C 语⾔中的⼀个重要概念&#xff0c;也是 C 语⾔中的⼀个重要特⾊。它的身影在整个 C 语⾔体系中都会出现&#xff0c;⽽且其概念也⼗分复杂&#xff0c;需要多加注意和思考。 二、解答 为了更好地弄清指针的概念&#xff0c;这⾥不得不先提到地址以及数据在内…

2024年助理工程师职称申报时间是什么时候?

2024年助理工程师职称评审申报仅有10天时间 2024年助理职称申报条件&#xff1a;1.学历满足专三或者本一2.工程类专业毕业3.中专毕业满足5年 如果有学历条件不符合的话&#xff0c;可以跟甘建二这边协商&#xff0c;帮你解决 继续教育要求&#xff1a;中专毕业或⼤学专科毕业…

GAN:对抗式生成网络之图片生成

对抗式生成网络(Adversarial Generative Network, AGN)这一术语在您提供的信息中并未直接出现。通常,在深度学习文献和实践中,与“对抗”和“生成”概念相结合的网络架构指的是生成式对抗网络(Generative Adversarial Networks, GANs)。GANs由Ian Goodfellow等人于2014年…

Golang | Leetcode Golang题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; func removeDuplicates(nums []int) int {n : len(nums)if n 0 {return 0}slow : 1for fast : 1; fast < n; fast {if nums[fast] ! nums[fast-1] {nums[slow] nums[fast]slow}}return slow }

M12设备端面板安装连接器板后安装(前锁)L扣

M12设备端面板安装连接器板后安装(前锁)L扣 优势 -100% 电气测试及插拔测试-对于紧凑型设备&#xff1a;可在有限空间内传输很高的功率-密封圈受过度拧紧保护&#xff0c;实现长期可靠的密封 标准 IEC61076-2-111 锁紧方式 螺纹锁紧 订单料号 P/N: L-KYF12K4Z-PG9-M-L0.…

SpringBoot启动流程分析之准备应用上下文refreshContext()

文章目录 源码入口1、准备刷新1.1、子类prepareRefresh()方法1.2 父类prepareRefresh&#xff08;&#xff09;方法 2、通知子类刷新内部bean工厂3、准备bean工厂4、允许上下文子类对bean工厂进行后置处理 源码入口 org.springframework.boot.SpringApplication#run(java.lang…