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

这一节将介绍更多的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=c0,10)会让R只使用横轴值在010范围内的数据。如果数据超过此范围,就不会出现在绘制的图形中。

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

生物信息学

不做实验的纯生信文章最多能发几分的sci?

2019-5-18 16:16:35

生物信息学

R语言系列第六期: ④R语言高级绘图(下)

2019-5-20 22:52:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索