前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言系列第六期: ④R语言高级绘图(下)

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

作者头像
百味科研芝士
发布2019-05-23 22:42:37
2.4K0
发布2019-05-23 22:42:37
举报
文章被收录于专栏:百味科研芝士

上一节我们重点介绍了plot()和matplot()两个绘图函数的几个重点参数,他们可以根据使用者的需要进行修改,绘制出自己需要的图形。当需要添加其他元素或者对全局进行设定的时候,我们就需要一些其他的函数来支持了。

其它定制R绘图的功能并不是绘图函数的参数,需要单独介绍。

01

添加点

通过points()函数或matpoints()函数可将附加的数据或模型添加到打开的图形中。用points()函数可将数据或模型曲线添加到有plot()函数生成的图形中,用matpoints()函数可将数据或模型曲线添加到由matplot()生成的图形中。这两个函数在绘制数据曲线的图形时,其使用方式与plot()函数和matplot()函数类似,许多参数也是完全一样。但修改存在图形的外观参数(例如:坐标轴的限制)对points()函数或matpoints()函数无效。

02

添加线

向已存在的图形添加直线时,可用lines()和matlines()函数。这两个函数都是将两个向量作为参数: 第一个向量作为x坐标的值;第二个向量作为y坐标的值,这两个向量联合在一起就可绘制一条线。可通过两个向量依次对应的点来绘制线,线的类型和风格由参数来指定。

很容易使用segment()函数来将间断(无连接)线段添加到现有图形中。另一种方法是多次调用lines()函数。segments()函数需要4个向量作为参数。前两个向量分别给出线段起始点的x坐标和y坐标,后面两个向量分别给出线段终止点的x坐标和y坐标。对segments()函数的绘图选项,可以向量的形式对其一次指定不同的绘图风格(对该函数和其他函数都可这样)。下面是一个使用segments()函数的例子:

> x0=c(2,2,3,4)

> y0=c(2,3,2,2)

> x1=c(2,3,3,4)

> y1=c(4,3,4,4)

> x=c(0,3)

> y=c(0,3)

> plot(x,y,type="l",lty=0,xlim=c(0,5),ylim=c(0,5))

> segments(x0,y0,x1,y1)

在整个图中画线可用abline()函数。此函数有如下三种形式:

abline(a,b),画一条直线,其中a是截距,b是斜率; abline(h=),画一条水平的直线,其中y轴的值由参数h=指定; abline(v=),画一条垂直的直线,其中x轴的值由参数v=指定。

使用abline()函数的例子:

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

> y=sin(x)

> plot(x,y,type="l",lty=1)

> abline(h=0,lty=2)

03

添加文本

用text()函数可将文本添加到绘图区域。而text()函数需要两个向量作为参数,这两个参数分别作为x-y坐标的值,并由此确定文本所在位置。另外还有一个字符串参数,它保存要绘制的文本。其中,pos=选项可能的取值1,2,3,4,它给出文本相对坐标点的位置。如果不指定pos=选项,文本将会叠加到中心点上。如下图所示:

> x=c(2.5,1,1,4,4)

> y=c(2.5,1,4,4,1)

> plot(x,y,type="p",xlim=c(0,5),ylim=c(0,5))

> text(x[2:5],y[2:5],c("bottom","left","top","right"),pos=1:4)

> text(x[1],y[1],c("overlay"))

指定pos=选项,pos=1为底部;pos=2为左边;pos=3为顶部;pos=4为右边,如果不指定pos的话,文字会叠加到坐标点上,两个中心相对应。

04

标题和副标题

用title()函数可以增加绘制图形的标题:

> x=c(1,2,3)

> y=c(3,3,3)

> plot(x,y)

> title(main="wow what a plot")

也可以用plot()函数(并且其他绘图函数也是一样)的main=选项参数来得到同样的效果:

> plot(x,y,main="wow what a plot")

如果这两种情形下的文本参数是一个字符串向量,就会生成一个多行标题:

> title(main=c("wow","what a plot"))

副标题是指在图形下方用sub=选项来增加文本,具体实现方法如下:

> title(main="wow what a plot",sub="and the labels rock too")

在plot()函数中,也可以使用sub=选项。调用title()函数会变得很灵活,例如,当一个标题需要应用于同时展示的多个图中时,可以用此函数。

05

图例

可以使用legend()函数来向图中增加图例。前两个参数是图例框左上方的x坐标和y坐标,接下来的参数是图例文本和出现在图例框中的绘图符号,例如:pch=和lty=。通常一种好做法是先画图,然后寻找一个恰当的空白区域来放置图例,比如:

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

> y1=sin(x)

> y2=cos(x)

> y=cbind(y1,y2)

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

> legend(3,1,c("sine","cosine"),lty=c(1,2))

06

新图形窗口

用下面的R命令可以打开一个新的图形窗口:

> windows()(在windows操作系统中)

当要生成多幅图时,可将对应的一行或者多行命令放在一个脚本文件中。不然,在一次生成图的过程中,当前生成的图会替换掉前一个图。

07

全局性与局部性

当plot()函数、matplot()函数或其他绘图函数调用选项时,这些选项对调用的函数而言具有局部性。对于工作在同一会话的其他绘图函数,都会使用默认设置。即这类绘图函数更改的都是临时设定或者内部设定。Par()函数可让一系列的绘图操作共享全局参数值,例如:对所有绘图操作而言,需要更改文本大小或固定线类型。par()函数接受大多数常用的绘图函数参数。当一个参数在随后的绘图函数中发生变化时,这个变化只对该绘图函数有效。若在par()函数中指定了这个参数,则可恢复它的值。就像我们之前所接触的例子,par(mfrow=c(2,2))等。

以上就是我们对R语言绘图功能的介绍了。R语言绘图时R很重要的功能,他们可用于量化信息的可视化。我们没有从太深刻的实例着手,因为学习R最难的地方就是基本的入门知识,一旦读者对R的概念以及体系结构有了一定的感悟,就会发现一切其实很容易,并且能深入研究R中有效且宝贵的图形显示资源,这包括R自身图形资源,也包括R脚本以及全世界科学家贡献的包。

网上还有很多高端大气的R图形教程,比如统计地图,各种高端可视化图,我这里也不详细讲解了,很容易就可以检索到,感兴趣的朋友可以多交流。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 百味科研芝士 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档