第3章 图形初阶

《R语言实战》笔记系列


本章学习大纲

1.图形的创建和保存

2.自定义符号、线条、颜色和坐标轴

3.标注文本和标题

4.组合多个图形

第一部分 图形的创建和保存


图形的创建

plot()是R中为对象作图的一个泛型函数(它的输出将根据所绘制对象类型的不同而变化)。

一般形式plot(x,y,type="b")将x置于横轴,y置于纵轴,绘制点集(x,y),然后使用线段将其连接。选项type="b"表示同时绘制点和线。使用help(plot)可以查看其它选项。


简单图形创建例子


图形创建的结果

图形的保存

1、通过代码保存图形。将绘图语句夹在开启目标图形设备的语句和关闭目标设备的语句之间即可。如:pdf("mygraph.pdf")。还可以用win.metafile(),png(),jpeg(),tiff()等。

2、直接通过图形用户界面保存图形。

同时查看多个图形的方法

1、创建一幅新图形之前打开一个新的图形窗口。通过函数dev.new()创建新窗口。

2、通过图形用户界面来查看多个图形。在windows里勾选“历史”中的“记录”,然后使用菜单里的“上一个”和“下一个”来查看已经绘制的图形。

3、通过函数dev.new()、dev.next()、dev.prev()、dev.set()、dev.off()同时打开多个窗口。

第二部分 自定义符号、线条、颜色和坐标轴

一般通过修改图形参数来自定义一幅画的多个特征(字体、颜色、坐标轴、标签)。有两种方法:

1.通过函数par()来指定这些选项。这种方式设定的参数值除非会话结束前一直有效。

调用格式为par(optionname=value,optionname=name,....)。不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readony=TRUE可以生成一个可以修改的当前图形参数列表。

注意最后一行通过par()来还原原始设置

2.可以直接在高级绘图函数中设定参数,且该参数只对这幅图形有效。但不是所有的高级绘图函数都允许指定全部可能的图形参数。


该参数只对该图形有效

符号和线条

如下图所示,参数pch用于指定绘制点时使用的符号。cex指定符号的大小,cex是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为1,1.5表示放大为默认值的1.5倍。lty标书线条类型,lwd表示线条宽度,默认值为1。

符号与线条的参数


符号21-25还可以指定边界颜色(col=)和填充色(bg=)


参数lty的线条类型
案例plot(dose,drugA,type="b",lty=3,lwd=3,pch=15,cex=2)

颜色

在R中可以通过颜色下标,颜色名称,十六进制的颜色值、RGB值或HSV值来指定颜色。比如col=1,col="write",col="#FFFFFF",col=rgb(1,1,1),col=hsv(0,0,1)

关于颜色的参数

col是默认的绘图颜色; col.axis是坐标轴刻度文字的 颜色

col.lab是坐标轴标签(名称)的颜色;col.main是标题颜色

col.sub是副标题颜色 ; fg是图形的前景色; bg是图形的背景色

文本属性

字体大小以及字样的参数

cex表示相对于默认大小缩放的数值。font表示用于指定绘图使用的字体样式,1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体。ps表字体磅数,文本最终大小为ps*cex。family表示绘制文本使用的字体族。标准的取值为serif(衬线)、sans(无衬线)和mono(等宽)

图形尺寸与边界尺寸


图形尺寸和边界尺寸的参数


设置图形和边界尺寸的案例

第三部分 标注文本和标题

许多高级绘图函数(plot,hist,boxplot)中可以设定坐标轴和文本标注选项。如标题(main)、副标题(sub)、坐标轴标签(xlab、ylab)并指定了坐标轴范围(xlim、ylim)。但并不是所有函数都支持这些选项。某些高级绘图函数已经包含了默认的标题和标签,可以通过在plot()语句或单独的par()语句中添加ann=FALSE来移除它们。


plot语句案例


plot()语句所绘画的图

标题

可以用titile()函数为图形添加标题和坐标轴标签,调用格式:


title()函数的一般格式

函数titele()也可指定其他图形参数(如文本大小,字体,旋转角度,颜色),具体函数见上。如col.sub="blue",cex.lab=0.75等。


坐标轴

可以通过函数axis()来创建自定义的坐标轴,而非R的默认坐标轴。

一般格式:axis(side,at=,labels=,pos=,lty=,col=,las=,tck=,..)


坐标轴参数汇总列表


自定义坐标轴示例


上述坐标轴选项的绘图结果

参考线

函数abline()可以用来为图形添加参考线,使用格式:

abline(h=yvalues,v=xvalues)

函数abline()也可添加指定其他图形参数(线条类型、颜色、宽度)如:abline(h=c(1,5,7))是指在1,5,7的位置添加水平线。

图例

函数legend()可以用来为图形添加图例,使用格式:

legend(location,title,legend,bty,bg,horiz=TRUE...)

指定盒子样式的bty,指定背景色的bg,指定水平放置图例的horiz=TRUE


图例的示例代码


图例的示例绘图

文本标注

通过函数text()和mtext()将文本添加到图形上。text()可以向绘图区域内部添加文本,mtext()可以向图形的四个边界之一添加文本。使用格式:

text(location,"text to place",pos,...)

mtext(location,"text to place",side,line=n,...)


函数text()和mtext()的选项


函数text()和mtext()示例


散点图的示例,各点添加了标签

数学标注

可以使用类似TeX中的写法为图形添加数学符号和公式。可以用help(plotmath)以获得更多细节和示例。

demo(plotmath)的部分效果

第四部分 组合多个图形

在R中使用函数par()或layout()将多个图形组成为一幅总括图形。

par()函数中使用图形参数mfrow=c(nrows,ncols)来创建按行填充的,行数为norws,列数为ncols的图形矩阵。也可以使用mfol=c(nrows,ncols)按列填充矩阵。

par()函数的应用
以上代码的结果(三行一列排布三幅图)

函数layout()的调用形式为layout(mat),其中mat是一个矩阵,它指定了所要组合的多个图形的所在位置。以下的代码示例显示一幅图被置于第1行,另两幅图被置于第2行。更精确地控制每幅图形的大小,可以在layout()函数中使用widths=和heights=两个参数。

layout()函数的应用
layout()函数代码的结果

对于更加精确的叠加或者排布若干图形,需要使用图形参数fig=.。以下为f参数fig=的取值,是一个形如c(x1,x2,y1,y2)的数值向量。fig=默认会新建一幅图形,所以在添加一幅图到一幅现有图形上,先设定参数new=TRUE。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343