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" 这三个类别。这有助于图形的观看者理解图中不同颜色的点代表的具体含义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware Intel i5-10400 安装Mac 14 Sonoma

目录 安装完后的效果安装前的准备创建虚拟机创建虚拟机,选择典型安装。选择ISO文件选择系统类型命名虚拟机设置磁盘完成 配置虚拟机文件修改配置文件 第一次运行虚拟机选择语言选择磁盘工具格式磁盘安装macOS Sonoma 其他问题登录Apple帐户 : MOBILEME_C…

Unity类银河恶魔城学习记录12-7-1 p129 Craft UI - part 1源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftList.cs using System.Collections; using System.Collections.Gen…

Composer Windows 安装

Composer 的下载地址为:Composer 1 运行安装程序 当启动安装程序后单击下一步继续。 选择 PHP 路径 如果你的计算机上没有安装 PHP 的话,Composer 的安装无法继续。 你需要选择你本地安装的 PHP 路径。 配置代理地址 默认的情况下,可以不…

一个项目的SpringCloud微服务改造过程

SSO是公司一个已经存在了若干年的项目,后端采用SpringMVC、MyBatis,数据库使用MySQL,前端展示使用Freemark。今年,我们对该项目进行了一次革命性的改进,改造成SpringCloud架构,并且把前后端分离&#xff0c…

ES6中 Promise的详细讲解

文章目录 一、介绍状态特点流程 二、用法实例方法then()catchfinally() 构造函数方法all()race()allSettled()resolve()reject() 三、使用场景# 参考文献 一、介绍 Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(…

四大生成式模型的比较——GAN、VAE、归一化流和扩散模型

比较四大模型的本质 four modern deep generative models: generative adversarial networks, variational autoencoders, normalizing flows, and diffusion models 待写

Android 14 NotificationChannels与Notification的加载流程

前言 这部分我觉得三方应用使用的较多,分析的时候也是源码与三方应用结合分析的。 一. NotificationChannel 的创建 在源码中,我看到了一个很怪的类:NotificationChannels.java。这个类继承了 CoreStartable。 注:CoreStartabl…

mysqldump: Got error: 1049: Unknown database ‘root‘ when selecting the datab

1.问题描述 MySQL版本号:MySQL Server 8.3MySQL持久化到处数据库结构及数据 mysqldump: Got error: 1049: Unknown database root when selecting the datab2.问题解决 cmd 切换本地路径 cd /d D:\Program Files\MySQL\MySQL Server 8.3\bin执行数据库备份命令 …

uniapp vue2 时钟 循环定时器

效果展示: 时钟 写在前面:vue2有this指向,没有箭头函数 实验操作:封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码: this指向的错误代码,在下: start() { this.myTimer setInterval(…

复习知识点整理

零碎语法 1.导入某个文件夹的index文件,index可以省略(这里导入的是router和store文件下的index.js文件) 2.路由懒加载 this 1.在vue文件中使用router\store对象时 this:普通函数的this指向vue实例对象(在没有明确指向的时候…

大语言模型上下文窗口初探(下)

由于篇幅原因,本文分为上下两篇,上篇主要讲解上下文窗口的概念、在LLM中的重要性,下篇主要讲解长文本能否成为LLM的护城河、国外大厂对长文本的态度。 3、长文本是护城河吗? 毫无疑问,Kimi从一开始就用“长文本”占领…

加载infercnv报错“../JAGS/modules-4/basemod.so”

library(infercnv) Error: package or namespace load failed for ‘infercnv’:.onLoad failed in loadNamespace() for rjags, details:call: load.module("basemod", quiet TRUE)error: File not found: /opt/R/4.3.2/lib64/R/../JAGS/modules-4/basemod.so 一、…

揭开Spring Bean生命周期的神秘面纱

目录 一、Spring IOC 1.1 Spring IOC 的加载过程 二、Spring Bean 生命周期 2.1 实例化前置 2.2 实例化后置 2.3 属性赋值 2.4 初始化前置 2.5 初始化 2.6 初始化后置 2.7 Bean 销毁 Spring 是一个开源的企业级Java应用程序框架,它简化了企业级应用程序开…

k8s资源监控_bitnami metrics-server v0(1),2024一位Linux运维中级程序员的跳槽面经

错误3 也有可能会遇到以下错误,按照下面提示解决 Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io) 如果metrics-server正常启动,没有错误,应该就是网络问题。修改…

基于SpringBoot的“自习室预订系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“自习室预订系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 管理员登录界面 座位预订管理界面图 自习室管理…

13 Python进阶:pip及其他常用模块

pip 是 Python 包管理工具,它提供了对 Python 包的查找、下载、安装、卸载的功能。 包地址: https://pypi.org/ 最新的 Python 版本已经预装了 pip。 pip 各种命令 查看是否已经安装 pip 可以使用以下命令: pip --version下载安装包使用…

Leetcode 581. 最短无序连续子数组

心路历程: 本以为这道题要用动态规划求解,因为题目中这几个关键字与动态规划太匹配了,结果想了半天也没发现dp(i)和dp(i-1)的递推关系。 这道题本意考察双指针的做法,也可以用排序后做比较的方式来做。 注意的点: 1…

【Redis 知识储备】冷热分离架构 -- 分布系统的演进(5)

冷热分离架构 简介出现原因架构工作原理技术案例架构优缺点 简介 引入缓存, 实行冷热分离, 将热点数据放到缓存中快速响应 (如存储到 Redis中) 出现原因 海量的请求导致数据库负载过高, 站点响应再读变慢 架构工作原理 多了缓存服务器, 对于热点数据全部到缓存中, 不常用数…

Android10系统ROM定制之Frida逆向分析实战

CSDN在线课程地址: https://edu.csdn.net/course/detail/37881 推荐阅读 2024培训课程 2024技术交流群 Android14系统安全 Android10系统ROM定制之Frida逆向分析实战

ctfshow web入门 文件包含 web151--web161

web151 打算用bp改文件形式(可能没操作好)我重新试了一下抓不到 文件上传不成功 改网页前端 鼠标右键&#xff08;检查&#xff09;&#xff0c;把png改为php访问&#xff0c;执行命令 我上传的马是<?php eval($_POST[a]);?> 查看 web152 上传马 把Content-Type改为…