R语言系列第六期:③R语言高级绘图(上)

2019-05-23 21:45:24 浏览数 (1)

这一节将介绍更多的R图形资源。首先是定制R图形的一些常用方法,主要涉及数据和模型的图形绘制。然后是如何自定义其他类型的图形或点线等元素。

A. 绘制二维图形

在R中,绘制二维图形主要有两个函数plot()和matplot()。

plot()函数主要绘制标准的x-y图形,它是基于笛卡尔坐标。这个函数会将两个向量作为参数,第一个向量作为横轴的值,第二个向量作为纵轴的值。例如:

> x=(0:100)*2*pi/100

> y=sin(x)

> plot(x,y)

如果只将一个向量做为plot()函数的参数,则该向量的值将作为y轴的值,而x轴的值由R自动产生:

> plot(y)

matplot()函数将两个矩阵作为参数。一个矩阵的列参照另一个矩阵的相应列来绘制图形。在绘制同一个图时,两个矩阵的行数应该一样。如果行数不一样,行数较少的那个矩阵用缺失值(NA)来填充。第一个矩阵的值会用在横轴上。如果其中一个矩阵只有一个列,则绘制的所有图形都将用该列的值。每一队列所绘制的图形颜色不一样,编号会用来做为不同图点的图形符号。这些选项也可由用户自己定义,例如:col=和pach=,后面会介绍这些选项。在对图形添加多个点时,matplot()函数可以省去很多麻烦,不用一一设定每个point()语句。matplot()函数可以统一设置各点的格式,并自动选择合适的坐标轴范围,使图形中包含全部数据,例如:

> y1=sin(x)

> y2=cos(x)

> y=cbind(y1,y2)

> matplot(x,y)

B. 符号、线与坐标轴风格的选项

可以使用一些选项来制定R绘制的图形。在函数plot()和matplot()中,选项通常作为附加参数被调用。可选参数能以任意顺序输入,以逗号隔开。如果省略这些参数,它们大多会采用默认值,下面将更加系统地介绍这些选项。

1

数字符号类型

绘图时对数据点所用的符号可通过pch=选项来指定(pch意思是“plotting character”)。例如pch=1表示用圆圈绘制数据点。下图就是常用的符号和对应的数值代码。

2

连接线类型

如果线是用来连接数据点或者绘制曲线,则可用lty=选项来控制它的样式。一般的线类型和对应的数值代码如下图所示。

另外,使用lty=选项和matplot()的其它选项时,可将这些选项的值组成一个向量,向量中的各元素会分别用到对应的图形上,使其具有不同的样式。例如:

> matplot(x,y,type="l",lty=c(1,2),col="black"

#Tips:我们可以看出来两个函数图分别用了线类型不同的两条线来绘制,col的设定可以保证两条线的颜色相同。

3

曲线类型

可用type=“”选项来指定不同的曲线类型。例如:type=“p”表示在绘制曲线时,只画点而不画连接线。常用的类型如下:

p:只画点的符号而不画连接线。

l:只画连接线而不画点的符号。 o:既画点的符号,又画连接线。 b:与o选项一样,只是连接线不会与点的符号接触。 h:在每个点与横轴之间画一条垂直线。 s:绘制“梯形”图,即先用水平直线,然后用竖线连接相邻点。 S:同s相似,只是水平线和垂直线顺序相反。 c:连接线里剔除掉点位置。

4

坐标轴的限制

选项xlim=和ylim=可分别用来限制横轴和纵轴的范围,例如,xlim=c(0,10)会让R只使用横轴值在0到10范围内的数据。如果数据超过此范围,就不会出现在绘制的图形中。

5

刻度线

在坐标轴上的刻度线由选项lab=和tcl=控制。lab=选项是一个向量,它有两个元素,第一个元素是横轴的刻度线数量,第二个选项是纵轴的刻度线数量。例如lab=(7,3)表示x轴被7个刻度线分成8个间隔;y轴被3个刻度线分成4个间隔。如果所指定的lab=选项不能使绘制的图形正常显示,R可能会重新用恰当的值来代替lab=选项的值。tcl=选项将一行文字的高度作为刻度线的长度。tcl的值为负数是表示刻度线在坐标轴外,为正数表示刻度线在坐标轴内。

6

坐标轴标签

在默认的情况下,横轴和纵轴的标签是绘图向量的名称。将标签通过xlab=“”和ylab=“”选项来修改,将所需的文本字符串放在引号中即可。例如:xlab=“time”,ylab=“population size”。

7

不显示坐标轴

有时图形不需要坐标轴会更好看些。不显示坐标轴的选项是axes=FALSE,不显示坐标轴标签的选项是ann=FALSE。

8

字符和标签大小可用选项cex=来修改

在默认情况下,cex指定的值为默认字符大小的倍数。cex的默认值为1。比如若cex=2,所绘制的字符为正常大小的2倍;cex=0.5,所绘制的字符是正常大小的一半。下面这些绘图选项也是通过类似的方式控制大小,即,都是参数值作为默认大小的倍数。

cex.axis= 为刻度文本大小的倍数

cex.lab= 为轴标签文本大小的倍数 cex.main=为标题文本大小的倍数 cex.sub= 为子标题文本大小的倍数 lwd= 为所画线宽度的倍数

9

字体族、字号和字样的参数

font= 用于指定绘图使用的字体样式。1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体(以Adobe符号编码表示)

font.axis= 坐标轴刻度文字的字体样式

font.lab= 坐标轴标签(名称)的字体样式

font.main= 标题的字体样式

font.sub= 副标题的字体样式

ps 字体磅值(1磅约为1/72英寸)。文本的最终大小为 ps*cex

family 绘制文本时使用的字体族。标准的取值为serif(衬线)、sans(无衬线)和mono(等宽)

C. 颜色

在数据图形中颜色应该谨慎且有节制地使用。当使用颜色时,应突出重要的信息,而不能随意使用它。颜色会产生干扰,当图中的符号具有不同颜色时,眼睛会自动寻找不同颜色的含义。纯粹的装饰色彩会将人们的注意力从图形本身所要表达的信息引开。用彩色数据图形还会有一个不太重要但也不能忽略的问题:一小部分人是色盲,而这部分人的数量也不在少数。

若要在绘图函数中使用彩色,可通过下面这些选项集来实现:

col=用来指定plot()函数和 matplot()函数中数据符号和曲线的颜色,还有barplot()函数生成的条形图颜色;

col.axis=坐标轴的颜色

col.lab=坐标轴标签的颜色 col.main=主标题颜色 col.sub=副标题颜色 fg= 图形的前景色 bg= 图形的背景色

颜色可通过代码值来指定。例如col=25会得到蓝色。在控制台执行colors()函数就可知R能识别657种颜色,为了方便起见,会列出657颜色名称,这些名称能被R识别。所以,col=“blue”与col=25是一样的效果。

> colors()

[1] "white" "aliceblue" "antiquewhite"

[4] "antiquewhite1" "antiquewhite2" "antiquewhite3"

[7] "antiquewhite4" "aquamarine" "aquamarine1"

......

[652] "yellow" "yellow1" "yellow2"

[655] "yellow3" "yellow4" "yellowgreen"

当然有些时候我们需要在图形上绘制独立的点,线或者文本等,这些都不是绘图函数的参数,需要独立的函数来支撑,我们下一节就为大家来介绍这些。

参考资料: 1. 《R语言统计入门(第二版)》 人民邮电出版社 Peter Dalgaard著 2. 《R语言初学者指南》 人民邮电出版社 Brian Dennis著 3. Vicky的小笔记本《blooming for you》by Vicky

End

TISIDB:一个专注做肿瘤免疫分析的神器

ECharts:生信统计小白都会的画图神器

确认过眼神,TCGA甲基化分析工具再也没有更NB的了!

【神器分享】自从用了这个神器,大规模RNA-seq数据挖掘我也可以

一个逆天的small RNA-seq数据挖掘神器

最全网页版生存分析工具,你掌握了几种?

懒人如何分析TCGA数据之cBioportal网站

DAVID&Metascape:专注于基因功能注释和富集通路分析的网站

零代码如何画高逼格热图?

GEPIA:点点鼠标分析TCGA数据-超高自由度

TCGA数据库挖掘

零代码下载TCGA数据库第一期

零代码下载TCGA数据库第二期:UCSC-XENA工具

零代码TCGA数据库下载第三期:cBioPortal网页

零代码下载TCGA数据库第四期:Fire Browse工具

手把手教你用R语言下载TCGA数据库:UCSCXenaTools

手把手教你用R下载TCGA数据:CGDSR包

手把手教你用R语言下载TCGA数据库:FirebrowseR

手把手教你用R语言下载TCGA数据库:GDCRNAtools

GEO数据挖掘系列

手把手教你GEO数据库表达谱差异基因分析(上):R版

手把手教你GEO数据库表达谱差异基因分析(下):GEO2

R语言实例操作分析GEO数据库甲基化芯片

GEO数据库甲基化芯片挖掘发3分SCI是怎样炼成的

R统计分析与绘图系列

浅谈一款进阶软件R的实际运用

R语言系列第五期:③R语言逻辑回归预测和检验

R语言系列五:②R语言与逻辑回归建立

R语言系列五:⑤R语言与多元回归

R语言系列第四期(番外篇):样本容量和把握度计算

R语言系列第四期:③R语言表格数据率的比较

R语言系列第四期:②R语言多组样本方差分析与KW检验

R语言系列第四期:①R语言单样本双样本差异性检验

R语言系列第三期:③R语言表格及其图形展示

R语言系列第三期:②R语言多组汇总及图形展示

R语言系列第三期:①R语言单组汇总及图形展示

R语言系列第二期(番外篇):R先生教你统计概率与分布

R语言系列第二期:①R变量、脚本、作图等模块介绍

R语言系列第二期:②R编程、函数、数据输入等功能

R语言系列第一期(番外篇 ):R的6种对象—向量、矩阵、数组、因子、列表、数据框

R语言系列第一期:R语言背景、下载安装及功能介绍

SCI科研

写好Response letter,让editor啧啧称赞

亲妈式搜索引擎,学习、购物、看剧、小说、听歌……全都免费包了

Researcher:你的专属文献追踪神器

实用干货| 投稿cover letter 怎么写才能留下完美第一印象

毕业答辩PPT太丑被评审专家怒斥,你缺了这个神器

基于Firefox的升级版PubMed,让你一眼看穿JCR分区、IF、引用情况

又是文献求助?没空下!去找K哥中不中?

他,“操纵”了期刊影响因子40年

外文文献翻译,秒否?文献阅读,知否?

玩转SCI:短平直快查询 IF & JCR分区&审稿周期&国产发文

SCI拟投稿期刊怎么选?要分数还要速度!

免费下载中英文文献,这些强大的方法不容错过

Pubmed专题系列

PubMed专题:(一)如何精准高效地进行文献搜索

硕博驿站

"都挺好-苏明玉如果是个医学生还能都挺好吗"

考研调剂,是考生的孤身奋战?还是导师与考生的共勉?

教育不公屡爆丑闻,2019研究生复试你要注意这些方面

规培变3年,寒窗苦读多少年,想做医生有多难!

“遇导不淑”高风险,火眼金睛选导师

博士之殇|进一步是荆天棘地,退一步是如履薄冰

从《流浪地球》到中科大失联博士:希望是像钻石一样珍贵的东西

0 人点赞