【科研猫】R语言从入门到精通:Day9

在上一次的推文中,我们已经介绍了很多应用广泛的图形。它们主要用于展示单类别型或连续型变量的分布情况。这一次,我们来讨论一下怎么利用图形展示双变量间关系(二元关系)和多变量间关系(多元关系)。展示变量关系的图形有很多,我们今天就主要介绍几种。

本篇教程,内容十分丰富,虽然是单篇,大家务必多多练习,可以充当一周的学习内容,静下心来慢慢吸收。

温馨提示
1、本节内容重点内容较多,
      务必紧跟红色标记。
2、测试数据及代码
      见文末客服小姐姐二维码。


散点图-拟合曲线

散点图可用来描述两个连续型变量间的关系。这里以R中自带的mtcars数据为例绘制第一个示例图。为了展示图中两个变量的关系,我们加上了两条拟合曲线,分别来自于函数 lm() 和函数 lowess()。

【科研猫】R语言从入门到精通:Day9_第1张图片

绘制散点图的基础函数为 plot()。函数 abline()、lines() 可以在图中添加拟合曲线。R中也提供了一些比 plot() 更强大的函数,比如 包car 中的 scatterplot()函数,感兴趣的同学可以自己尝试一下这个函数。

散点图矩阵

一个散点图可以展示两个变量之间的关系,如果有多个变量呢?散点图矩阵可以解决这个问题。散点图矩阵对应的函数是 pairs(),图2 就是一个很好的例子。

【科研猫】R语言从入门到精通:Day9_第2张图片

在上图中,对角线上的变量名说明了每幅图形对应的两个变量。同时,不难发现,对角线上下的图形是相同的,可以通过参数 upper.panel = NULL 来控制只生成下三角的图形。同样的,在 包car 中也有函数 scatterplotMatrix() 可以绘制散点图矩阵。下面给出了一个例子。

【科研猫】R语言从入门到精通:Day9_第3张图片

可以看到上图中默认为散点图添加了拟合曲线,代码中的参数可以控制曲线为虚线或实线。

创建散点图矩阵的函数很多,比如:
glus包 中的 cpars() 函数
TeachingDemos包 中的 pairs2() 函数
HH包 中的xysplom() 函数
ResourceSelection包 中 的 kepairs() 函数
SMPracticals包 中的 pairs.mod() 函数。

每个函数都加入了自己独特的曲线。散点图矩阵作为一种简单清晰的图形,可以说是数据分析与展示工作中必备的工具了。


密度散点图

散点图固然直观,但也不是完美的,在大数据时代,散点图就显得力不从心了。比如,10,000个观测点的案例中的散点图是这样的。

【科研猫】R语言从入门到精通:Day9_第4张图片

乌压压的一片,啥也看不到~ 这种情况下,高密度散点图可以帮我们解决困难。比如函数 smoothScatter()。

【科研猫】R语言从入门到精通:Day9_第5张图片

虽然丢失了一些细节,但可以完整的展示整体上两个变量之间的关系。上面的图形当然也有其他的函数可以绘制,比如 hexbin包 中的 hexbin() 函数。那散点图矩阵有没有对应大数据集的解决方案呢?答案是肯定的,比如函数smoothScatter() 以及 IDPmisc包 中的函数 ipairs()。大家不妨自己对照帮助文档动手试一试。


三维散点图

在二维坐标系中的散点图可以展示二元变量关系,那三维坐标系一定可以展示三元变量关系了。但是,人们对于三维散点图的观测能力是远不如二维散点图的。下面是一个简单的三维散点图的例子(可用scatterplot3d包中的 scatterplot3d()函数来绘制它们的关系)。

【科研猫】R语言从入门到精通:Day9_第6张图片

这里就不展开讲更多三维散点图的函数了。大家感兴趣的话,可以自己尝试一下rgl包中的plot3d()、car包中函数scatter3d()等等。


气泡图

相信接触过功能富集之类分析工作的同学对气泡图不会陌生。这是另一种展示三个变量间的关系的方法。可用symbols()函数来创建气泡图。下面是一个气泡图的示例。

【科研猫】R语言从入门到精通:Day9_第7张图片

其实,气泡图是一种特殊的散点图,通过先创建一个二维散点图,然后用点的大小来代表第三个变量的值,在某些分析工作中还是比较常见的。
散点图很多时候能帮我们发现数据中隐藏的一些关系,但如果要观察某个变量的变化趋势,折线图会是更好的选择。绘制折线图的主要函数包括了plot(),lines()。两者的主要区别在于lines()并不自己生成图形,而是在已有图形上添加信息。两个函数中控制生成图形的参数为type。参数type的选项如下:

【科研猫】R语言从入门到精通:Day9_第8张图片


相关图

下面有一个很好的例子为大家展示折线图的功能和绘制方法。


【科研猫】R语言从入门到精通:Day9_第9张图片

折线图和散点图中的变量关系都只能靠我们自己定性判断,如果要得到定量的相关关系,该怎么办?相关图可以解决这个问题,下面是一个简单的例子,主要用到的函数为corrgram()。由于我们还没接触到R中的数据分析,这个图形的具体含义就不给大家解释了,在紧接着的几次讲完统计分析之后,再给大家补充这部分内容。

【科研猫】R语言从入门到精通:Day9_第10张图片

马赛克图

最后给大家介绍一种不太常见的图形——马赛克图。这种图形当然不是为了给数据打马赛克,它的功能是展示多个类别型变量之间的关系。回顾之前学过的图形,折线图和散点图可以展示连续型变量间关系的方法,单个类别型变量可以用柱状图或者饼图展示,那么马赛克图就解决了它们解决不了的问题。

在马赛克图中,嵌套矩形面积正比于单元格频率, 其中该频率即多维列联表中的频率。颜色和/或阴影可表示拟合模型的残差值。vcd包中的mosaic()函数可以绘制马赛克图。(R基础安装中的mosaicplot()也可绘制马 赛克图,但还是推荐vcd包,因为它具有更多扩展功能。)下图为例。

【科研猫】R语言从入门到精通:Day9_第11张图片

上图中,以R中自带的Titanic数据集为例,它包含存活或者死亡的乘客数、乘客的船舱等级(一等、二等、三等和船员)、性别(男性、 女性),以及年龄层(儿童、成人)等信息。这是一个被充分研究过的数据集。观察图形可以得到大量的数据信息。大家可以通过代码ftable(Titanic)得到更多详细信息。


本节小结

到这里,专门讲解图形绘制的内容基本结束,相信大家已经掌握了大部分基本图形的绘制技巧。后面我们就要开始统计分析部分的内容,中间肯定也会包含一些图形的绘制(比如前面的相关图),相信所有内容结束之后,大家都会是绘图小能手了!

最后,为了方便大家学习,本次推文中所有图形的数据都来自R自带或者R中函数包自带,图形及相关代码免费奉送~~可以通过联系文末客服小姐姐获得。

【科研猫】R语言从入门到精通:Day9_第12张图片

讲师简介
上海交通大学硕士,MIT博士,长期从事医学与生物信息学研究,主要研究方向为高通量测序在肿瘤早期筛查和无创产前诊断中的临床应用,独立开发多个数据分析软件并发表相关文章(影响因子≥5分6篇,≥10分2篇),熟知R、Python、Perl及C语言等多种编程语言及程序设计,曾累计书写R代码超过5万余行。

下期推文预告:基本统计分析

本期干货

R语言Day9-高级统计绘图代码

关注“科研猫”公众号,联系客服
胖雨小姐姐 or 折耳猫小姐姐 领取

往期干货链接
R语言从入门到精通系列
从今天开始,每天学点R语言~  (领取教材)
R语言从入门到精通:Day1     (领取安装包)
R语言从入门到精通:Day2      (领取RStudio操作视频)
R语言从入门到精通:Day3      (领取测试代码)
R语言从入门到精通:Day4      (领取测试代码)
R语言从入门到精通:Day5      (领取测试代码)
R语言从入门到精通:Day6     (领取测试代码)
R语言从入门到精通:Day7     (领取测试代码)
R语言从入门到精通:Day8     (领取测试代码)
科研作图系列
【科研猫·绘图】bar(霸)图绘制之霸气满屏
【科研猫·绘图】今夏最热的“热图”(带R代码分享)
【科研猫·绘图】看·箱线图·如何美丽动人(代码分享)
【科研猫·绘图】优雅版·小提琴图(带R代码分享)
【科研猫·绘图】缤纷版·韦恩图(带R代码分享)
【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)
网络图
从网络图探寻基因互作的蛛丝马迹(1)
【科研猫·绘图】从网络图探寻基因互作的蛛丝马迹(2)
从网络图探寻基因互作的蛛丝马迹(3)
从网络图探寻基因互作的蛛丝马迹(4)
生存分析系列
【科研猫】生存分析的正确姿势(1)视频+R代码分享
【科研猫·出品】TCGA超大批量生存分析教程
GEO数据挖掘系列
GEO数据库挖掘(1)--SCI文章速成
GEO数据库挖掘(2)--快速锁定目标数据
挖掘GEO速成SCI文章系列教程(3)-R语言基础
重磅:GEO数据库挖掘教程(4)一体化分析代码(带视频+R代码分享)
GO/KEGG功能富集系列
3分钟了解GO/KEGG功能富集分析
干货预警:3分钟搞定GO/KEGG功能富集分析(2)
终极篇:3分钟搞定GO/KEGG功能富集分析-柱状图
终极篇:3分钟搞定GO/KEGG功能富集分析-气泡图
TCGA数据挖掘系列
隔壁实验室的“秃鹫”师兄又发SCI啦--TCGA数据挖掘实战
TCGA数据挖掘终结者:cBioPortal
生物信息入门系列
大咖聊“生信”—生物信息系列(1)
生物信息系列课程-R语言入门

更多科研新鲜资讯、文献精读和生物信息技能
请关注科研猫公众号


科研猫原创系列,未经许可严禁转载
版权事宜由上海辰明律师事务所提供法务支持。

你可能感兴趣的:(【科研猫】R语言从入门到精通:Day9)