原标题:【科研猫·R】R语言从入门到精通:Day8

在上一次教程中,我们讲解了R语言绘图的诸多函数,想必看到自己做出的图形,肯定小有成就感吧。上期的最后,给大家预告了一部分本次教程的内容:图形的组合,除此之外,我们在讲讲基本图形的绘制(条形图、散点图、饼图、直方图等),赶紧开始battle起来吧~~

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

温馨提示

1、本节内容重点内容较多,

务必紧跟红色标记。

2、测试数据及代码

关注【科研猫】公众号,后台回复R 语言

图形的组合

图形的组合,顾名思义,就是将两张或者更多图形放在一起展示。在R中,一般使用函数par()或者layout()组合多幅图形。其中par()图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。另外,可以使用 mfcol=c(nrows, ncols) 按列填充矩阵。

下面是两张函数par()中mfrow参数的实例。

在函数par()和函数layout()的举例中,不可避免的使用到了散点图、条形图、箱线图等图形的绘制,这些内容也会在本次推文中提到,图形组合中的几个例子算是先给大家热热身。

图1:函数par(),参数mfrow的实例1

图2:函数par(),参数mfrow的实例2

参数mfcol的使用是类似的,就不重复举例了。

函数layout()的参数要更复杂一些,同时对图形布局的控制也更加精细。该函数通过layout(mat)的形式实现图形的布局,其中 mat 是一个指定布局情况的矩阵。同时函数 layout() 中有 widths 和 heights 两个参数控制组合图形中单个图形的宽度和高度的比例。同样的,我们为大家提供了两个学习的例子。

图3:函数layout()的例子1

图4:函数layout()的例子2

如果在运行上面四幅图形的代码时出现了类似 Error in plot.new() : figure margins too large这样的错误,可以尝试将 Rstudio 中的“绘图区”放大一些,并不是我们的代码出错啦~~。

上面的几个例子虽然实现了图形的组合,但我们还需要更加精细的组合方法,函数 par() 中的参数fig可以帮忙。下面是一个典型的例子。

图5:参数fig的实例

参数fig的使用可以理解为给每一幅图形以坐标系的方式指定绘图区域。将整个绘图区域理解为横坐标为 0 到 1、纵坐标为 0 到 1 的正方形区域,上图中散点图的绘图区为横坐标 0 到 0.8、纵坐标 0 到 0.8 的区域,上方的箱线图绘图区域为横坐标 0 到 0.8、纵坐标为 0.55 到 1 的区域。

这里区域的划分看上去好像和散点图重叠了,但实际效果并不是,因为每幅图形都有空白边界,同时区域的划分并不是一成不变的,需要在实际绘图中不断调整得到最美观简洁同时准确表达图形含义的效果

右边的箱线图的区域则为横坐标 0.65 到 1、纵坐标 0 到 0.8。相信大家在多次练习之后就可以用参数 fig 绘制出更加复杂美观的图形。

基本图形的绘制

在上面的几个例子中,我们已经接触到了散点图、条形图、箱线图的绘制,本次推文的剩余内容就是介绍这些基本图形的绘制。

基本图形主要包括了点图、条形图、箱线图、饼图、扇形图和核密度图等,这些图形的目的主要有两点:将数据的分布可视化展示、对数据进行跨组比较。下面就从条形图开始介绍基本图形的绘制。

条形图

条形图通过垂直的或水平的条形展示了类别型变量的分布(频数),在R中对应函数barplot()。下面是几个简单的例子。

图6:简单条形图

图7:堆砌条形图和分组条形图

为了方便大家重复图形绘制过程,上面图形中展示的数据都是来自包vcd ,大家在运行代码前安装vcd包即可。其中图6中展示了简单条形图的绘制,图7中展示了堆砌条形图和分组条形图的绘制。图7中出现了图例与图形重叠的现象,大家可以回顾一下上一次推文中图例设置的内容,调整图例的大小和位置,就可以解决这个问题。(这个小问题就留给大家区解决了)

从上面这个问题可以看出,只有三个变量的情况下都不可避免的出现了图例和图形重叠的情况,更复杂的情况该怎么办?不用担心,条形图中的各种元素都是可以微调的,以图6中的第二幅图为例,调整图中文本的方向和大小使得图形更加简洁清晰。

图8:条形图的微调。

还有一种特殊但常见的条形图:棘状图。棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段的高度即表示比例,可以通过vcd包中的函数spine()绘制。例子如下:

图9: 棘状图实例

饼图or扇形图

相比于条形图,饼图或者扇形图在R中不太受欢迎,因为我们对长度的比较总是比对面积的比较要更加敏感。即便如此,我们要为大家提供了一些饼图的实例。主要涉及函数 pie()、函数 pie3D()、函数 fan.plot()。

图10:饼图实例

图11:扇形图实例。

饼图中建议标注上每个变量的信息,否则分辨面积的大小不是一件容易的事情,特别是当差异很小的时候!相比之下,就不难理解为什么条形图更受欢迎了。

直方图

直方图和条形图很类似,但它描述的是连续型变量的分布。前面介绍图形组合的时候,我们已经接触了直方图的绘制,下面给大家一些更加细致的例子。

图12:直方图示例

第一幅图形就是最简单的直方图绘制,余下的三幅图都是在函数hist()中调整参数或者加上其他元素而绘制的图形,其中第三、四幅图形中加上了密度曲线(在后面会进一步介绍),这是很常见的处理方式。

在图12中的密度曲线有时候会单独出现,这时候被称为核密度图。绘制核密度图的方法在图12的代码中已经出现了 (plot(density(x)),下面是几个单独的例子。

图13:核密度图的示例

第一幅图形是最简单的核密度图,第二幅图形加上了一些微调。第三幅图形是三个密度曲线比较的图形,其中需要安装包sm。同时代码中用到了参数locator(使用这个参数之后,我们可以用鼠标选择图例的位置,避免了有时候无法处理图形和图例位置关系的尴尬)。

小提琴图

还有一种常见又美观的图形——箱线图(小提琴图是一种特殊的箱线图),其实我们在图形组合中也见过了,绘制方法为函数 boxplot()。小提琴图的绘制方法为vioplot()。最简单的箱线图的例子就不给大家重复了,下面是一幅展示了箱线图中各个元素含义的简图。

图14:箱线图含义解析

箱线图

箱线图的绘制是很灵活的,下面是几个实例。

图15:箱线图示例

第一幅图利用箱线图进行了跨组比较,第二幅图通过参数notch实现了凹槽箱线图的绘制,第三幅图的比较更复杂一些,但基本原理是类似的。

小提琴图

箱线图能很好的展示组间的差异,核密度图能很好的展示组内的分布,如果把这两种图形结合起来是不是听上去就很完美?小提琴图就是这样的一种图形,读过科研猫前面推文的同学应该对小提琴图的绘制还有印象,我们这里有更容易理解的代码(因为只有一行,一个函数vioplot()啊)。

图16:小提琴图示例

点图

最后我们用点图结束本次推文的所有内容,函数dotchart()可以绘制点图。

图17:点图的示例

在上图中,我们调整了函数 dotchart()中的很多参数,可以看到简单的点图也可以展示出很多有用的信息,但是点图的实用性随着数据点的增多会急剧减小。

综合来说,图形的潜力是巨大的,我们下一次的推文还要进一步展示图形说明数据内在关系的能力。

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

本期干货

·

!R语言图形day8图形绘制 !

关注“科研猫”公众号,联系客服

讲师简介

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

下期推文预告

图形绘制的延伸

往期热文:

R语言从入门到精通系列

从今天开始,每天学点R语言~ (领取教材)

R语言从入门到精通:Day1 (领取安装包)

R语言从入门到精通:Day2 (领取RStudio操作视频)

R语言从入门到精通:Day3 (领取测试代码)

R语言从入门到精通:Day4 (领取测试代码)

R语言从入门到精通:Day5 (领取测试代码)

R语言从入门到精通:Day6 (领取测试代码)

R语言从入门到精通:Day7 (领取测试代码)

科研作图系列

【科研猫·绘图】今夏最热的“热图”(带R代码分享)

【科研猫·绘图】看·箱线图·如何美丽动人(代码分享)

【科研猫·绘图】优雅版·小提琴图(带R代码分享)

【科研猫·绘图】缤纷版·韦恩图(带R代码分享)

【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)

从网络图探寻基因互作的蛛丝马迹(1)

【科研猫·绘图】从网络图探寻基因互作的蛛丝马迹(2)

从网络图探寻基因互作的蛛丝马迹(3)

生存分析系列

【科研猫】生存分析的正确姿势(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语言入门

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

下方点好看,更多好看。返回搜狐,查看更多

责任编辑:

用c语言绘制小猫图案,【科研猫·R】R语言从入门到精通:Day8相关推荐

  1. R语言绘制生存曲线估计|生存分析|如何R作生存曲线图

    根据生存曲线的估计,可以推断出相比组之间存活时间的差异,因此生存曲线非常有用,几乎可以在每个生存分析中看到.我们围绕生存分析技术进行一些咨询,帮助客户解决独特的业务问题. 例 我们可以创建简单的生存曲 ...

  2. r语言绘制精美pcoa图_「R」数据可视化5:PCA和PCoA图

    其实不论是PCoA还是PCA图均是用散点图来展示结果PCoA和PCA的结果,PCoA和PCA准确来讲是数据降维分析方法. 什么是PCA和PCoA 主成分分析(Principal components ...

  3. 如何使用R语言绘制生存曲线图

    在预后研究中,生存曲线是常见的图片之一,目的是描述各组中患者的生存情况.好的生存曲线图不仅可以令读者.编辑和审稿专家眼前一亮,也能为论文增色不少. 接下来跟大家分享如何用R语言绘制生存曲线图. 第一步 ...

  4. R语言绘制带聚类树的堆叠柱形图

    R语言绘制带聚类树的堆叠柱形图 聚类树与柱形图结合,即可反映样本或分组间的相似性,又能展示样本内的元素组成信息. 例如下图是一个在扩增子测序微生物群落分析中常见的统计图类型,在测序公司给的报告中通常都 ...

  5. AI科研绘图1:零基础入门和基本图形绘制

    Adobe illustrator是一种应用于出版.多媒体和在线图像的工业标准矢量插画的软件,是一款非常好的图片处理工具,简称AI. 作为一只实验狗,总要想办法展示自己的数据结果,漂亮的配图则会给你的 ...

  6. 科研绘图之R语言生存分析KM曲线累计风险表放在图片内部

    科研绘图之R语言生存分析KM曲线和累计风险表 KM估计 R语言展示KM估计的生存函数曲线 1.最简单的方法 2.利用survminer包绘制 3.进一步美化,添加累计风险表格.图例.文本注释 KM估计 ...

  7. 猫的计算机相关的网络语言,辟谣:猫咪的语言是喵?教你读懂“猫言猫语”,让你明白猫的内心...

    "我们一起学猫叫,一起喵喵喵~"歌词里唱的很动听,可是养过猫的主子们应该会很难引起共鸣,毕竟在家也没真的听主子们喵过多少次,兽医小明在这里辟个谣哦,猫咪的叫声可不只是喵喵叫. 猫咪 ...

  8. 【编程题】【Scratch二级】2019.09 绘制雪花图案

    绘制雪花图案 1. 准备工作 (1)隐藏小猫角色. 2. 功能实现 (1)初始设定雪花中心点的坐标为(x=0,y=0): (2)线条粗细1,线条颜色为任意彩色: (3)点击绿旗,在屏幕上画出均匀分布的 ...

  9. 画个球啊(上)——纯C语言绘制圆球

    封面来源:链接 简介 Long Long Ago,在知乎上看了叶大的"一百行以下有哪些给力代码"和"用C语言绘制心形"的回答,可谓是我图形学的开始之一,最近才好 ...

  10. R语言绘制不一样的条形图

    绘制条形图的方法有很多,这里介绍如果用R语言绘制一个不一样的条形图 准备数据,这里为了方便,我们使用已经存在于gcookbook包中的一个数据集 首先需要调用该包,如果该包不存在,可以使用下面的方式安 ...

最新文章

  1. 自动识别口罩佩戴模型在线教学,抗疫在家涨知识!
  2. python3.6.5安装教程-Centos7 安装Python3.6.
  3. UITableView 滑动删除
  4. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
  5. pde中微元分析法的主要思想_初中数学常用的思想方法丨所有题型的考试技巧最全整理,高分必备...
  6. 关于线程池ThreadPoolExecutor使用总结
  7. 容器编排技术 -- Kubernetes kubectl run 命令详解
  8. java -为什么重写equals(),还需要重写hashCode()?
  9. 用python写一个hello world程序
  10. jquery 插件zClip实现复制到剪贴板功能
  11. 古希腊神话故事1 :普罗米修斯
  12. 网站后台目录扫描工具Dirbuster和御剑(脚本小子的最爱)
  13. HFSS - GSM 900 单频PIFA天线的设计与仿真
  14. 【Kafka】10道不得不会的 Kafka 面试题
  15. 什么是ISO9000质量管理体系认证以及认证流程
  16. 微信公众平台教程,注册申请、认证、开发、推广营销,教你怎么用微信公众号...
  17. Windows安装宝塔后跳过绑定手机号
  18. 802.11p WAVE notes
  19. 纬度、经度和坐标系网格
  20. dB、dBm、dBw的含义和转化关系

热门文章

  1. CentOS从零搭建SRS直播服务器
  2. 5点促进软件外包转型升级
  3. 李小铭计算机专业应聘书作文,应聘申请书英语作文
  4. Wannacry“永恒之蓝”勒索病毒最全防范措施
  5. Prometheus + Grafana 搭建监控报警系统
  6. 永中office属于职称计算机吗,永中office
  7. 如何查看自己windows电脑的IP地址
  8. H5 实现类似QQ消息列表(已读,未读)拖拽点击事件功能
  9. hackthebox - frolic (考点: 信息搜集 ook解密 base解密 zip 解密 xxd解密 brainfuck解密 playsms安全)
  10. 系统——现有centos7操作系统制作为iso镜像文件