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()结果如图

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

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

相关文章

如何开始用 C++ 写一个光栅化渲染器?

光栅化渲染器是计算机图形学中最基础且广泛应用的一种渲染技术,它将三维模型转化为二维图像。下面我们将逐步介绍如何使用C语言从零开始构建一个简单的光栅化渲染器。 一、理解光栅化渲染原理 光栅化是一种将几何数据(如点、线、三角形)转换…

视频拍摄后如何用二维码分享?在线制作视频二维码的方法

现在很多人会将拍摄的视频内容用生成二维码的方式来分享给其他人,与以前使用微信、QQ、网盘等形式相比,二维码能够更加简单快捷的将视频传递给其他人查看,不需要下载缓存占用扫码者的内存,提供更好的用户体验效果。 视频转二维码…

大语言模型及提示工程在日志分析任务中的应用 | 顶会IWQoS23 ICPC24论文分享

本文是根据华为技术专家陶仕敏先生在2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会闪电论文分享环节上的演讲整理成文。 BigLog:面向统一日志表示的无监督大规模预训练方法 BigLog: Unsupervised Large-scale Pre-training for a Unified Log Represen…

低代码平台适合谁用?业务岗能用它做什么?开发岗能用它做什么?一文讲清!

近期,低代码开发平台以其独特的魅力,迅速引发了大众的广泛关注。众多人士纷纷寻求了解各类低代码产品,以探究其功能与特点。 然而,有些人可能因一两款产品的体验不佳,便对整个低代码行业产生了偏见。但我要指出的是&am…

JS 表单验证

点击注册的时候&#xff0c;渲染出来&#xff0c;验证码是自动获取出来的 html&#xff1a; <div class"div1">用户名<input type"text" id"yhm"><span id"span1"></span><br>密码<input type"…

用AI作图,使用这个免费网站,快看我画的大鹏鸟和美女

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

C语言面试题之判定字符是否唯一

判定字符是否唯一 实例要求 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同 实例分析 1、使用一个大小为 256 的bool数组 charSet 来记录字符是否出现过&#xff1b;2、遍历字符串时&#xff0c;如果字符已经在数组中标记过&#xff0c;则返回 false&a…

Linux、Docker、Brew、Nginx常用命令

Linux、Docker、Brew、Nginx常用命令 Linuxvi编辑器文件操作文件夹操作磁盘操作 DockerBrewNginx参考 Linux vi编辑器 Vi有三种模式。命令模式、输入模式、尾行模式&#xff0c;简单的关系如下&#xff1a; i -- 切换到输入模式&#xff0c;在光标当前位置开始输入文本。&a…

代码随想录算法训练营Day48|LC198 打家劫舍LC213 打家劫舍IILC337 打家劫舍III

一句话总结&#xff1a;前两题白给&#xff0c;第三题树形DP有点难。 原题链接&#xff1a;198 打家劫舍 滚动数组直接秒了。 class Solution {public int rob(int[] nums) {int n nums.length;int first 0, second nums[0];for (int i 2; i < n; i) {int tmp Math.m…

SysTick滴答定时器 - 延时函数

SysTick定时器 Systick定时器&#xff0c;是一个简单的定时器&#xff0c;对于CM3,CM4内核芯片&#xff0c;都有Systick定时器。Systick定时器常用来做延时&#xff0c;或者实时系统的心跳时钟。这样可以节省MCU资源&#xff0c;不用浪费一个定时器。比如UCOS中&#xff0c;分…

记录一次Ubuntu 22.04桌面版安装向日葵的过程

大概花了近一天的时间安装了WIN11和Ubuntu 22.04双系统&#xff0c;中间Ubuntu安装时出现了好几次失败&#xff0c;后来检查可能是下载的iso文件有问题&#xff0c;重新下载一次&#xff0c;刻录到U盘。安装才算成功。 最后的Ubuntu系统信息如下 接着安装向日葵的时候出错了&a…

visionOS 专门应用提交数大幅下降;Kimi 不断「吊打」国内各大厂 AI 模型丨 RTE 开发者日报 Vol.180

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

【六 (3)机器学习-机器学习建模步骤/kaggle房价回归实战】

目录 文章导航一、确定问题和目标&#xff1a;1、业务需求分析&#xff1a;2、问题定义&#xff1a;3、目标设定&#xff1a;4、数据可行性评估&#xff1a;5、资源评估&#xff1a;6、风险评估&#xff1a; 二、数据收集&#xff1a;1、明确数据需求2、选择数据来源3、考虑数据…

显示LED屏驱动内置上电复位电路,2线串行接口-VK1640 SOP28 8×16点阵

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK1640 封装形式&#xff1a;SOP2 概述 VK1640是一种数码管或点阵LED驱动控制专用芯片&#xff0c;内部集成有数据锁存器、LED 驱动等电路。SEG脚接LED阳极&#xff0c;GRID脚接LED阴极&#xff0c;可支持8SEGx16GR…

机器学习之特征选择(Feature Selection)

1 引言 特征提取和特征选择作为机器学习的重点内容&#xff0c;可以将原始数据转换为更能代表预测模型的潜在问题和特征的过程&#xff0c;可以通过挑选最相关的特征&#xff0c;提取特征和创造特征来实现。要想学习特征选择必然要了解什么是特征提取和特征创造&#xff0c;得…

golangci-lint 报错

File is not gci-ed with --skip-generated -s standard,default (gci) golangci-lint 报错上面的错解决办法&#xff1a; 1. 文件换行需要换成"LF" 而不是"CRLF" ---->>> 2. 运行下面的命令自动修复(需要在相应的目录下或自己设置目录) …

从数据采集到可视化展示Node-Red二次开发4G模块

环境监测正逐步迈入数字化、智能化时代。Node-Red作为一种开源流式编程工具&#xff0c;以其强大的数据处理能力和设备集成便捷性&#xff0c;在构建环境监测数据站中发挥着至关重要的作用。钡铼技术支持Node-Red编程开发&#xff0c;支持BLIoTLink软网关和自定义开发非标协议。…

# ABAP SQL 字符串处理

经常我都要在ABAP的sql语句中对字符串进行处理&#xff0c;现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 字符串处理 在SQL语句中&#xff0c;有时候会有需要拼接字段或者是…

【iOS ARKit】AR Quick Look 概述

为更好地传播共享 AR 体验&#xff0c;苹果公司引入了 AR Quick Look&#xff0c;并在iOS 12及以上版本系统中深度集成了 AR Quick Look&#xff0c;因此可以通过iMessage、Mail、Notes、 News、 Safari 和 Files 直接体验 AR&#xff0c;AR Quick Look提供了在 iPhone 和iPad …

B02、分析GC日志-6.3

1、相关GC日志参数 -verbose:gc 输出gc日志信息&#xff0c;默认输出到标准输出-XX:PrintGC 输出GC日志。类似&#xff1a;-verbose:gc-XX:PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志&#xff0c; 并在进程退出时输出当前内存各区域分配情况-XX:PrintGCTimeStamp…