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

ggpolt2绘图系统被称为R语言中最高大上的绘图系统,使用ggplot2绘图系统绘图就像是在使用语法创造句子一样,把数据映射到几何客体的美学属性上。因此使用ggplot2绘图系统的核心函数ggplot来绘图必须具备三个条件,数据data,美学属性aes,几何客体geom,缺一不可。在ggplot2绘图系统中有很多的“层(Layer)”,这些层就好像是不同的动词名词形容词等等,我们需要将这些层组合在一起就能够绘制图形了。

第一层是数据层Data,第二层是与美学相关的层(Aesthetics),比如颜色,标题,线宽等等,第三层是几何客体层,比如是点还是线等,还有一些比较高级的层比如

  1. 统计变换层(Statistical transformations layers)

:统计变换层用于在图形中应用统计变换。

    • geom_smooth():平滑图层,用于添加平滑线(如线性回归线或局部回归线)。
  1. 注释层(Annotation layers)

:注释层用于在图形中添加文本或箭头等注释。

    • geom_text():文本图层,用于在图形中添加文本标签。
    • geom_label():标签图层,用于添加文本标签并可以调整位置。
    • annotate():注释函数,用于添加各种类型的注释,如文本、箭头、矩形等。
  1. 主题层(Theme layers)

:主题层用于调整图形的外观和风格。

    • theme():主题函数,包含了一系列的参数,用于调整图形的背景、文字、线条等样式。
  1. 坐标系层(Coordination layers)

:坐标系层用于改变图形的坐标系。

    • coord_cartesian():笛卡尔坐标系,用于设置 x 和 y 轴的范围。
    • coord_flip():翻转坐标系,交换 x 和 y 轴。
    • coord_polar():极坐标系,用于创建雷达图等。
    • coord_trans():转换坐标系,用于对坐标轴进行变换。

下面将举例对ggplot2绘图进行演示

运行代码qplot(Wind,Temp,data=airquality),x轴是Wind,y轴是Temp,数据源是airquality,结果如图,确实比较高级

再引入参数col=Month,会发生什么?第一次看可能有疑问,怎么能把一个Month变量(Month变量是一个向量)赋给col呢,不都是把某个数字或者颜色赋给col吗?这个就不用我们深究,qplot中确实有这样的参数写法,允许把一个向量赋给col,运行之后结果如图,可以看到从五月份到九月份的散点分别用深度不同的蓝色表示

而实际上我们只需要用不同颜色表示不同的月份即可,不需要非要用颜色深度不同的渐变色,这时候我们需要的是把Month转换成一个分类变量。运行这两句代码

产生的结果就是这样的一个图,此时的Month被转换成了一个因子,虽然不是分类变量,但是可以认为因子就具有分类变量的功能了

如果是只想用某一种特定颜色比如红色绘制散点图,可以把col参数写成col=I("red"),如图

当然美学属性不止有颜色,还可以改变散点的大小,比如把Month赋给size,运行代码qplot(Wind,Temp,data=airquality,size=Month)得到结果

也可以对散点的形状进行操作,比如运行代码qplot(Wind,Temp,data=airquality,shape=Month),不同月份的散点形状就不同了

当然也可以使用大写的I来使散点的形状或者大小是一个固定的值,也可以使用常见的参数比如xlab,ylab,main等设置标签

qplot的参数还有geom,这个参数代表几何客体,比如有这样的代码qplot(Wind,Temp,data=airquality,geom=c("point","smooth")),其中point代表要绘制散点图,smooth表示还要添加一条平滑线,ggplot2会自动选择一个合适的平滑线添加进去。这句代码的运行结果如图,图中的蓝色曲线就是ggplot2自动选择的平滑线,蓝色线周围的阴影部分是置信区间。

如果我们再把颜色这个参数加上,即运行代码qplot(Wind,Temp,data=airquality,geom=c("point","smooth"),col=Month),就产生了一幅这样的图像,每个月份都有一种颜色的平滑线和散点。从而我们可以体会到颜色这个参数如果跟分类变量联系起来会对我们的结果产生巨大影响。

再比如运行这句代码qplot(Wind,Temp,data=airquality,facets = .~Month),其中参数facets参数用于创建分面(facet)图表,这是一种将数据的多个子集布局在同一个图形窗口中的技术结果,~ 是 R 语言中用于创建公式的符号,而. 代表整个数据集,意味着分面将应用于整个数据集。如图

如果把Month放在左边,~.放在右边,就会变成一个五行一列的图像,运行代码qplot(Wind,Temp,data=airquality,facets = Month~.),结果如图

qplot是非常智能的,前面我们传的前面参数是两个(Wind与Temp),但是并没有指定绘制什么类型的图像,这时候qplot会猜测我们要绘制散点图,如果是传一个参数比如只传Wind,qplot会猜测我们要绘制的是一个柱状图。比如代码qplot(Wind,data=airquality)的运行结果为风速的频率分布图横坐标代表风速,纵坐标代表频率

运行qplot(Wind,data=airquality,fill=Month),引入了参数fill,在 ggplot2 中,fill 参数是一个非常重要的美学映射(aesthetic)选项,它用于设置图形中填充区域的颜色。

运行代码qplot(Wind,data=airquality,geom="density"),表示把美学客体设置密度函数的形式,运行结果如图

介绍完qplot函数之后,再来介绍一下ggplot2绘图系统的核心函数:ggplot函数

ggplot函数绘图需要数据层,美学层,几何客体层,缺一不可,比如代码ggplot(airquality,aes(Wind,Temp))只有数据层和美学层,没有几何客体层,运行这句代码之后发现没有任何图形在画图板,其中airquality用于指定数据层,aes参数用于设定图形的美学映射,比如这里就是把Wind映射到x轴而Temp映射到y轴。想要绘制图形我们还应该添加几何客体层,代码应该写成ggplot(airquality,aes(Wind,Temp))+geom_point(),+是ggplot函数中的函数组合运算符,用于将多个图层或修改添加到图形中。geom_point()是一个几何对象(geom),用于在图形中绘制点。它告诉ggplot 在图形的每个 (Wind,Temp) 坐标点上绘制一个点。运行结果如图

ggplot(airquality,aes(Wind,Temp))+geom_point(col="red",alpha=0.4,size=5)可直接在geom_point函数中对散点进行某些设置,比如颜色是红色,透明度0.4,大小是5。如果想要每个月份都用不同颜色的点来表示,就可以这样写geom_point(aes(col=factor(Month)),alpha=0.4,size=5),运行结果如图,注意颜色参数的设置,首先是把Month这个数值型向量转换成因子类型,这样他就具有了分类变量的属性,然后col=factor(Month),但是这样还不够,必须在aes内部进行,aes是ggplot2中的一个非常重要的函数,它用于设置图形的美学映射(aesthetic mapping),即数据变量与图形属性之间的映射关系。

我们还可以继续添加一条平滑线ggplot(airquality,aes(Wind,Temp))+geom_point()+geom_smooth(),或者ggplot(airquality,aes(Wind,Temp))+geom_point()+stat_smooth(),这两句代码运行结果是一样的,运行结果为

运行代码ggplot(airquality,aes(Wind,Temp))+stat_smooth(method="lm",se=F),表示可以设置拟合的方式为线性回归,同时不显示置信区间

运行代码ggplot(airquality,aes(Wind,Temp))+stat_smooth(method="lm",se=F,aes(col=Month))表示每个月份用不同颜色的回归直线来拟合结果,方法是在stat_smooth函数中添加一个美学属性的参数。当然也可以直接写到ggplot中的aes中,不一定非要写在stat_smooth的aes中,也即代码ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+stat_smooth(method="lm",se=F)与上面代码的运行结果是一样的

上面是用每个月份的数据分别进行了拟合,如果直接用所有月份数据进行拟合,并希望每个月份用不同颜色的线,应该引入参数group=1,也即ggplot(airquality,aes(Wind,Temp,col=factor(Month),group=1))+stat_smooth(method="lm",se=F),但是运行这句代码之后我们发现并没有达到我们的要求,他虽然使用了所有月份的数据进行拟合,但是却只用了蓝色,

实际上是因为颜色的参数是只作用到了第一层,点的那一层,我们把散点加上就可以观察到。ggplot(airquality,aes(Wind,Temp,col=factor(Month),group=1))+geom_point()+stat_smooth(method="lm",se=F),结果为

在上面的例子中不同月份使用的点的颜色是我们无法人为控制的,如果我们想要人为控制并且使用一些比较好看的颜色,可以使用R包RColorBrewer

运行代码my_colors

先运行代码display.brewer.pal(5,"Dark2")来看看my_colors中的颜色是什么

运行代码library(RColorBrewer)

my_colors

display.brewer.pal(5,"Dark2")

ggplot(airquality,aes(Wind,Temp,col=factor(Month),group=1,col="All"))+

geom_point()+

stat_smooth(method="lm",se=F)+

scale_color_manual("Month",values=my_colors)

结果如图

还可以把不同月份的散点显示在不同的面板中,比如运行代码ggplot(airquality,aes(Wind,Temp,col=factor(Month),group=1))+geom_point()+scale_color_manual("Month",values=my_colors)+facet_grid(.~Month),这段代码引入了函数facet_grid()结果如图

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

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

相关文章

41---音频电路设计

视频链接 音频电路设计01_哔哩哔哩_bilibili 音频电路设计 1、音频基本介绍 1.1、设备 1.1.1、音频接口 型号:ABA-JAK-038-K44 电脑主机上的音频输出插口,一个是粉色的,用来连接麦克风或话筒,一个是绿色的,用来连…

智能工业电脑在智慧电力中实现全程实时监控与调控

可视化编程工业电脑在化工、石油、电力等行业过程控制领域扮演着越来越重要的角色。这些基于ARM架构设计的嵌入式工业计算机凭借其高性能、低功耗以及出色的实时处理能力,有效提升了各行业生产过程的安全性和效率。 钡铼技术ARMxy系列采用嵌入式Linux 系统开发的产品…

YUDAO源码中的正序倒序表格ElmentUI的实现,与后端的配合?

前端展示和实现&#xff1a; 1. elmentUI表格的定义 2. JS请求参数改造 <!-- 列表 --><el-table v-loading"loading" :data"list" sort-change"handleSortChange"><el-table-column label"Expiry Date" prop"…

Vue第三方组件使用

文章目录 一、组件传值二、elementui组件使用三、fontawesome图标 一、组件传值 1、父组件与孩子组件传值 在孩子组件中定义props属性&#xff0c;里面定义好用于接收父亲数据的变量。 孩子组件是Movie Movie.vue。注意看在Movie组件里面有props对象中的title和rating属性用…

flutter ListView在TabBar在Column在SingleChildScrollView

flutter ListView在TabBar在Column在SingleChildScrollView _大数据知识库 我得到的异常为A RenderBox object must have an explicit size before it can be hit-tested. Make sure that the RenderBox in question sets its size during layout. 解决办法&#xff1a;添加w…

LMDeploy 推理部署工具

一. 大模型部署面临的挑战 1. 计算量巨大 大模型参数量巨大&#xff0c;前向推理时需要进行大量计算。 2. 内存开销巨大 大模型在推理过程中&#xff0c;以FP16为例&#xff0c;20B模型仅加载参数就需40G显存&#xff0c;175B模型更是需要350G显存。同时在推理过程中&#xff…

项目中使用消息队列改进——基于RabbitMQ

使用 RabbitMQ 实现消息队列 导入依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!--防止消息转…

Jmeter如何录制https的系统性能脚本

在使用jmeter录制性能测试脚本时&#xff0c;会遇到网站为http和https两种情况&#xff0c;略有不同&#xff0c;下面介绍一下&#xff1a; 1.Jmeter录制http 1.测试计划–>添加–>非测试元件–>HTTP(S)测试脚本记录器 【HTTP(S)测试脚本记录器】有的版本叫【HTTP代…

基于ES-EKF的LiDAR/GNSS/IMU传感器融合轨迹估计(附项目源码)

基于改进EKF的LiDAR/GNSS/IMU传感器融合轨迹估计&#xff08;附项目源码&#xff09; 算法概述PredictionCorrectionES-EKF算法融合算法实现轨迹估计实验结果 最近在研究传感器融合&#xff0c;看到一个很好的开源项目&#xff0c;适合小白学习&#xff0c;为以后做传感器融合、…

.net 6 集成NLog

.net 6 webapi项目集成NLog 上代码step 1 添加nugetstep 2 添加支持step 3 添加配置文件 结束 上代码 step 1 添加nuget 添加nuget 包 Roc step 2 添加支持 修改program.cs var builder WebApplication.CreateBuilder(args); // 添加NLog日志支持 builder.AddRocNLog();ste…

贪心算法|860.柠檬水找零

力扣题目链接 class Solution { public:bool lemonadeChange(vector<int>& bills) {int five 0, ten 0, twenty 0;for (int bill : bills) {// 情况一if (bill 5) five;// 情况二if (bill 10) {if (five < 0) return false;ten;five--;}// 情况三if (bill …

Lvs+keepalived+nginx搭建高可用负载均衡集群,爱了爱了

检查 最后启动nginx服务 135配置虚拟网卡 检查 最后启动nginx服务 Nginx.conf配置如下 关闭132的keepalived服务后 浏览器能正常访问 132在keepalived配置中加入脚本 脚本内容 132清除ipvsadm中的规则,vip不见 133收到vip 自我介绍一下&#xff0c;小编13年上海交大毕业&…

使用idea运行程序,发现控制台的中文出现乱码

修改UTF-8发现没有效果&#xff0c;寻找.idea文件夹的encodings.xml文件&#xff0c;将里面的UTF-8全部变成GBK.

了解Vue中的 computed 计算属性

目录 1. computed计算属性介绍和基础语法 1.1. 概念 1.2. 语法 2. “计算属性”和“方法”的对比 2.1. computed 计算属性 2.1.1. 作用 2.1.2. 语法 2.2. methods 方法 2.2.1. 作用 2.2.2. 语法 2.2.3. 缓存特性&#xff08;提升性能&#xff09; 3. computed 计算…

云原生:5分钟了解一下Kubernetes是什么

在当今的云计算时代&#xff0c;容器化技术变得越来越重要。它能够帮助开发者更高效地部署和管理应用程序。而Kubernetes&#xff0c;作为容器编排领域的领军者&#xff0c;正逐渐成为企业构建和管理云原生应用的核心工具。 近期将持续为大家分享Kubernetes相关知识&#xff…

sql基础语法

sql基础语法 1. 什么是MySQL1.1 RDBMS 特点1.2 sql分类1.3 数据类型1.4 适应MySQL 2. 代码顺序与后台执行顺序2.1 代码撰写顺序2.2 后台执行顺序 3. 基础查询4. 条件检索5. 分组6. 多表查询6.1 子查询&#xff08;几乎不用&#xff09;6.2 连接查询 7. 常用函数 前同事培训过相…

GitHub 仓库 (repository) Branch - SSH clone URL - Clone in Desktop - Download ZIP

GitHub 仓库 [repository] Branch - SSH clone URL - Clone in Desktop - Download ZIP 1. Branch2. SSH clone URL3. Clone in Desktop4. Download ZIPReferences 1. Branch 显示当前分支的名称。从这里可以切换仓库内分支&#xff0c;查看其他分支的文件。 2. SSH clo…

FreeGPT3.5 开源软件

GPT-3.5不需要付费&#xff0c;也不需要注册用户&#xff0c;可以直接使用了&#xff0c;官方彻底开放了API接口。 该API政策一放开&#xff0c;GitHub很快就已经出现了一个开源项目FreeGPT35&#xff0c;可以自动生成key调用GPT3.5的API接口&#xff0c;再也用不着注册账号和申…

服务器数据恢复—V7000存储raid5数据恢复案例

服务器数据恢复环境&#xff1a; P740AIXSybaseV7000存储阵列柜&#xff0c;阵列柜上有12块SAS机械硬盘&#xff08;包括1块热备盘&#xff09;。 服务器故障&#xff1a; 管理员在日常巡检过程中发现阵列柜中有一块磁盘发生故障&#xff0c;于是更换磁盘并同步数据&#xff0…

快速熟悉torchdiffeq用法,从数理逻辑到完整案例【第二部分】

本系列文章板块规划 提示&#xff1a;以下内容仅为个人学习感悟&#xff0c;无法保证完全的正确和权威&#xff0c;大家酌情食用谢谢。 第一部分 torchdiffeq背后的数理逻辑 第二部分 torchdiffeq的基本用法 第三部分 trochdiffeq的升级用法 第四部分 torchdifffeq的案例和代码…