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

news2024/12/25 1:02:47

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

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

相关文章

视频插针调研

视频插针 1、评估指标2、准确度3、实时4、视频流处理3、实时RIFE视频插帧测试 1、评估指标 参考:https://blog.csdn.net/weixin_43478836/article/details/104159648 https://blog.csdn.net/weixin_43605641/article/details/118088814 PSNR和SSIM PSNR数值越大表…

【CSS】MDN

一、CSS构建 1.1 CSS选择器 1.1.1 元素选择器 标签不区分大小写 示例: span {background-color: yellow; }1.1.2 通用选择器 选择文档中所有内容,重置样式表中使用较多 鉴于div:first-child(代表所有的div元素,并且是第一个…

IT行业网络安全守护者-行云管家云堡垒机

IT行业即信息技术行业,是一个涵盖广泛的行业领域,主要涉及与信息的处理、存储、传输和应用相关的技术。对于IT行业而言,保障数据安全以及网络安全至关重要,一不小心就容易造成数据泄露事件。今天我们小编就给大家介绍一下IT行业网…

Docker 搭建私有镜像仓库

一、镜像仓库简介 Docker的镜像仓库是一个用于存储和管理Docker镜像的中央位置。镜像仓库的主要作用是提供一个集中的地方,让用户可以上传、下载、删除和共享Docker镜像。镜像仓库又可以分为公共镜像仓库和私有仓库镜像仓库: 公共镜像仓库 Docker Hub 是…

ZStack Cloud 5.0.0正式发布——Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强四大亮点简析

近日,ZStack Cloud 5.0.0正式发布,推出了包含Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强在内的一系列重要功能。云主机管理、物理机运维、密评合规、灾备服务等诸多使用场景和功能模块均有更新,为您带来更完善的平台服务、更…

OJ 进制转换 判断进制【C】

进制转换 好久没写C,太生疏了,记一下我卡住的几个点 1.C没有字符串这种数据类型,要实现读入一个未知长度的字符串比较简单的方法 建立一个一定比这个字符串长的数组,而字符串在数组中的存储是会自动以\0结尾的,所以遍…

macOS制作C/C++ app

C/C制作macOS .app 一、 .app APP其实是一个文件夹结构,只不过mac的界面中让它看起来像一个单独的文件。 在shell终端或者右键查看包结构即可看到APP的目录结构。 通常的app目录结构如下: _CodeSignature, CodeResources 一般为Mac APP Store上架程序…

三极管结构难?——秒了

前边我们已经学完了PN结,二极管,在分析了二极管后,我们对这些东西有了一定深度的了解,但是只给我们一个二极管去研究,这玩意好像真的没啥大用,其实我们追求的是用半导体材料去代替电子管的放大作用&#xf…

51单片机入门_江协科技_21.2_74HC595 在Proteus中模拟8x8点阵屏环境搭建

1. 为了在proteus中模拟学习江协科技51单片机教程,需要在proteus中搭建74HC595驱动8x8点阵屏的仿真环境; 1.1. 因为连接单片机P0口作为点阵屏负极(行选),所以需要先在P0口上接上上拉电阻RESPACK 8,1k欧姆阻…

K8S哲学 - kubectl

Kubectl is the Kubernetes cli version of a swiss army knife, and can do many things. Kubernetes coordinates a highly available cluster of computers that are connected to work as a single unit k8s production-ready. 概念 kubectl 和 Kubernetes API 区别

【前端】学习路线

1、基础 1.1 HTML 菜鸟教程-主页:https://www.runoob.com/ 可以学习:HTML、CSS、Bootstrap等 1.2 CSS 《通用 CSS 笔记、建议与指导》 1.3 JavaScript 1)入门:JavaScript 的基本语法 2)进阶:现代 …

react-静态组件,动态组件

react09- 组件 静态组件 动态组件 静态组件: 函数组件,在第一次渲染完成后,组件中的内容,不会根据组件内的某些操作再次进行更新,页面并不会跟着改变 过程: 第一次渲染时,执行函数方法&#x…

二、Docker部署Jenckins(详细步骤)

Docker部署Jenckins、初始化(详细步骤) 一、拉取镜像二、启动Jenkins三、访问Jenkins四、安装插件1.配置源2.插件安装 一、拉取镜像 docker安装教程:https://qingsi.blog.csdn.net/article/details/131270071 - 查询镜像 docker search jen…

【配电网故障定位】基于二进制蝗虫优化算法的配电网故障定位 12节点配电系统故障定位【Matlab代码#75】

文章目录 【获取资源请见文章第5节:资源获取】1. 配电网故障定位2. 二进制蝗虫优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 配电网故障定位 配电系统故障定位,即在配电网络发生故障的时候&am…

python基础——python包【创建和导入,下载第三方包】

📝前言: 在上一篇文章python基础——模块中,我们讲解了有关python模块的相关知识,这篇文章我们进一步讲解用于储存多个模块文件的python包: 1,什么是python包 2,如何创建和导入python包 3&#…

Windows系统上运行appium连接iOS真机自动化测试

步骤: 1、windows安装tidevice工具 2、Mac系统打包安装WebDriverAgent(WDA)工具 3、安装Appium 4、连接iOS手机 iOS自动化的实现和执行都依赖Mac系统,因为需要通过Xcodebuild编译安装WDA (WebDriverAgent)到iOS设备中,通过WDA实现对被测应用进行操作。而Windows系统无…

【LAMMPS学习】八、基本知识的讨论(1.8)键的断裂

8. 基本知识的讨论 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和…

FreeRtos入门-10 裸机程序的不足

裸机的程序的框架 1) 经典单片机程序 // 经典单片机程序 void main() {while (1){任务1();任务2();} } 缺点:任务1和任务2之间的互相影响 2)前后台结构,前台:中断处理函数,后台main函数 void main()//后…

【oracle数据库安装篇一】Linux5.6基于LVM安装oracle10gR2单机

说明 本篇文章主要介绍了Linux5.6基于LVM安装oracle10gR2单机的配置过程,比较详细,基本上每一个配置部分的步骤都提供了完整的脚本,安装部分都提供了简单的说明和截图,帮助你100%安装成功oracle数据库。 安装过程有不明白的地方…

VBA 实现outlook 当邮件设置category: red 即触发自动创建jira issue

1. 打开: Outlook VBA(Visual Basic for Applications) 方法一: 在邮件直接搜索:Visual Basic editor 方法二: File -> Options -> Customize Ribbon-> 打钩 如下图: 2.设置运行VBA 脚本: File -> Options -> Trust center -> Trus…