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

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

相关文章

力扣HOT100 - 560. 和为k的子数组

解题思路&#xff1a; 方法一&#xff1a;枚举 class Solution {public int subarraySum(int[] nums, int k) {int cnt 0;for (int start 0; start < nums.length; start) {int sum 0;//注意开始位置for (int end start; end < nums.length; end) {sum nums[end];…

软件设计师知识点-1

串行的计算公式为&#xff1a;(取值时间分析时间执行时间) x 指令的个数 流水线的计算公式为&#xff1a;单条指令的执行时间 (n-1) x 流水线周期 n的意思为指令的个数&#xff0c;流水线周期的意思为取值&#xff0c;分析&#xff0c;执行三条执行过程中花费时间最多的那条…

VSCode配置AI自动补全插件Tabnine

面向软件开发人员的 AI 助手 使用 AI 代码完成更快地编写代码 什么是Tabnine Tabnine 是一款 AI 代码助手&#xff0c;可让您成为更好的开发人员。Tabnine 将通过所有最流行的编码语言和 IDE 的实时代码完成、聊天和代码生成来提高您的开发速度。 无论您将其称为 IntelliSens…

代码随想录阅读笔记-二叉树【二叉搜索树转换为累加树】

题目 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xff0c;二叉搜索树满足下列约束条件&…

Java绘图坐标体系

一、介绍 下图说明了Java坐标系。坐标原点位于左上角&#xff0c;以像素为单位。在Java坐标系中&#xff0c;第一个是x坐标&#xff0c;表示当前位置为水平方向&#xff0c;距离坐标原点x个像素&#xff1b;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐…

西门子PLC(S7-200 SMART)学习笔记1:初识PLC可编程逻辑器件

今日开始我的西门子PLC学习之路&#xff0c;学习的型号以S7-200 SMART为主 主要认识一下PLC是什么、型号怎么看、 通信相关、编程软件、构造及工作原理 目录 西门子官方PLC手册获取&#xff1a; 1、PLC可编程逻辑器件的基本认识&#xff1a; PLC的结构及各部分的作用&#xff…

threejs 基础知识点汇总

threejs 基础知识点汇总 之前写了几篇博文&#xff0c;但是我觉得写的不好&#xff0c;我今天再补充一篇还不好的&#xff0c;把基础知识点汇总一下&#xff0c;不写运行的代码了&#xff0c;只写关键代码&#xff0c;但是看了之前我写的那几篇&#xff0c;看这篇的话问题其实不…

群晖NAS使用Docker部署Potopea在线图片编辑工具并实现公网访问

文章目录 1. 部署Photopea2. 运行Photopea3. 群晖安装Cpolar4. 配置公网地址5. 公网访问测试6. 固定公网地址 本文主要介绍如何在群晖NAS使用Docker部署Potopea在线图片编辑工具&#xff0c;并结合cpolar内网穿透实现公网环境可以远程访问本地部署的Potopea. Photopea是一款强大…

伺服电机的惯性

一、伺服电机的惯性 伺服电机的惯性主要指电机及其连接的负载的惯性。它是通过将物体的质量与其距离旋转轴的平方相乘得到的。对于伺服电机来说&#xff0c;惯性体现了电机和负载对速度和加速度变化的阻力程度&#xff0c;即其惯性越大&#xff0c;对速度和加速度变化的阻…

人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理_对话服务创建---人工智能工作笔记0159

先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…

看不起的行业,其实比工作 赚的多

1、烧烤&#xff0c;只要你敢干&#xff0c;一年的利润是普通人五年的工资&#xff0c;日入2000。 2、翻新二手手机&#xff0c;深圳华强北好的时间段一天能卖出几千台&#xff0c;日入1000。 3、大学食堂开个小卖部&#xff0c;一个月就能挣个大千&#xff0c;日入1500。 4…

基于Spring Boot与Vue的智能化学生心理咨询评估系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

计算机网络:网络层的路由选择协议

网络层的 路由选择协议 路由表 从下图的三个简单的拓扑结构所示&#xff0c;如果其中一条链路断了&#xff0c;静态路由就通不了&#xff0c;断了。但是使用动态路由可以动态调届选择策略。 静态路由和动态路由的区别对比和特点 路由选择协议 自治系统AS 内部网关协议RI…

MySQL高级(索引结构Hash,为什么InnoDB存储引擎选择使用B+tree索引结构?)

目录 1、Hash索引结构 2、Hash索引特点 3、存储引擎支持 4、为什么InnoDB存储引擎选择使用Btree索引结构&#xff1f; 1、Hash索引结构 哈希索引就是采用一定的hash算法&#xff0c;将键值换算成新的hash值&#xff0c;映射到对应的槽位上&#xff0c;然后存储在hash表中。 如…

SpringBoot第一个hello world项目

文章目录 前言一、Spring Boot是什么&#xff1f;二、使用步骤1. 创建项目2.书写测试 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了…

【机器学习】深入解析机器学习基础

在本篇深入探讨中&#xff0c;我们将揭开机器学习背后的基础原理&#xff0c;这不仅包括其数学框架&#xff0c;更涵盖了从实际应用到理论探索的全方位视角。机器学习作为数据科学的重要分支&#xff0c;其力量来源于算法的能力&#xff0c;这些算法能够从数据中学习并做出预测…

【JavaWeb】Tomcat服务器

目录 动态网站动态网站的特点 程序架构B/S与C/S的比较B/S技术的工作原理URL 什么是Web服务器 Web服务器、服务端、服务器的区别和联系什么是TomcatTomcat服务器的安装与配置解压缩版本Tomcat的配置添加系统变量&#xff0c;名称为CATALINA_HOME&#xff0c;值为Tomcat的安装目录…

C/C++中局部变量static用法实例

1. 普通局部变量存储于进程栈空间&#xff0c;使用完毕会立即释放&#xff0c;静态局部变量使用static修饰符定义&#xff0c;即使在声明时未赋初值&#xff0c;编译器也会把它初始化为0&#xff0c;并且静态局部变量存储于进程的全局数据区&#xff0c;即使函数返回&#xff0…

解密项目管理专业术语:十大名词背后的实战技巧

项目管理是一门综合学科&#xff0c;涵盖了一系列方法、技能和工具。今天为大家带来项目管理的十大专业术语&#xff0c;它们分别是项目范围、利益相关者管理、工作分解结构&#xff08;WBS&#xff09;、里程碑、风险管理、资源分配、关键路径法&#xff08;CPM&#xff09;、…

Word·VBA文档合并

目录 1&#xff0c;复制法&#xff0c;不保留原文档格式2&#xff0c;复制法&#xff0c;保留原文档格式3&#xff0c;插入法&#xff0c;保留原文档格式 之前的文章《WordVBA实现邮件合并》虽然可以生成邮件合并文档结果&#xff0c;但是不能像《python实现word邮件合并》一样…