《R语言实战》学习笔记及代码(第三章)

感谢Robert I.Kabacoff 著作本书,同时感谢高涛、肖楠、陈钢编译此书。

最近在学习《R语言实战》,特将学习过程记录下来,供各位朋友参考,虽说是笔记,但是90%是书中内容,另外10%是自己偶尔冒出的一点点想法的记录和一些疑问,希望互相探讨。末尾有本章的代码清单下载地址,与各位交流,还是提倡按照书中内容把代码一个个敲出来。

第三章 图形初阶

本章内容

图形的创建与保存

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

标注文本和标题

控制图形维度

组合多个图形

3.1 使用图形

在通常的交互式会话中,你可以通过逐条输入语句构建图形,逐渐完善图形特征,直至得到想要的结果。

在通过代码保存图形时,将绘图语句夹在开启目标图形设备的语句和关闭目标图形设备的语句直接即可。

通常绘制新图形时,会覆盖掉之前的图形,有三种方法能保证创建多个图形并随时查看每一个。

  • 第一种:在创建一个新图形之前,打开一个新的图形窗口:

    dev.new()

    statements to creat graph 1

    dev.new()

    statements to creat graph 2

    etc

每一幅新图形将出现在最近一次打开的窗口中。

  • 第二种:通过图形用户界面查看多个图形。
      在windows上分为两步,在打开第一个图形窗口以后勾选历史(History)→记录(Recording),然后使用菜单中的上一个(Previous)和下一个(Next)来逐个查看已经绘制的图形。

  • 第三种:使用函数dev.new()、dev.next()、dev/prev()、dev.set()和dev.off()同时打开多个图形窗口,并选择将哪个输出发送到哪个窗口中,这种方法全平台适用。

3.2 一个简单的例子

在plot(x,y,type = "b")中,type的类型有9种。分别绘制不同的图形。

b

b

c

c

h

h

l

i

o

o

p

p

大S

大S

小s

小s

其中o和b、大S和小s需要特别注意一下,仔细观察图形,注意他们的不同点。

3.3 图形参数

第一种方法是使用par()函数,来指定图形的多个特征(字体、颜色、坐标轴、标题)。这种方法的特点是:除非秀给其中参数,否则将在会话结束前一直有效。

par(optionname = value,optionname = name,…)

如果不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readonly = TRUE可以生成一个可以修改的当前图形参数列表。

第二种方法是为高级绘图函数直接提供optionname = value的键值对。仅对当前图形有效。代码:

plot(dose,drugA,type = "b",lty = 2,pch = 17)

并不是所有的高级绘图函数都允许指定全部可能的图形参数,需要参考函数的帮助来确定哪些参数可以通过这种方式设置。

3.3.1 符号和线条

  • pch : 指定绘制点时使用的符号。(书中P45)

  • cex : 指定符号的大小,cex是一个数值,表示绘图符号相对于默认大小的缩放倍数,默认大小为1。1.

  • lty : 指定线条类型。(书中P46)

  • lwd : 指定线条宽度。lwd是以默认值的相对大小来表示的(默认值为1)

对于pch=21~25,还可以指定便捷颜色(col = )和填充色(bg = )

3.3.2 颜色

R色彩的在线图表

3.3.3 文本属性

par(font.lab = 3, cex.lab = 2, font.main = 4, cex.main = 2)

为何在文本属性的设置中,没有仅对当前图形设置生效的方法?

3.3.4 图形尺寸与边界尺寸

  • pin 以英寸表示的图形尺寸
  • mai 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英寸。
  • mar 以数值向量表示的边界大小,顺序为“下、左、上、右”,单位为英分。默认值为c(5,4,4,2)+0.1

一英分等于十二分之一英寸。

边界参数在线教程

按照代码清单做一遍的同时,先自己理解每一句的含义,再看书中的解释。

3.4 添加文本、自定义坐标轴和图例

有些高级绘图函数允许自行设定坐标轴和文本标注选项。书中例子为图形添加了

标题 main

副标题 sub

坐标轴标签 xlab、ylab

坐标轴范围 xlim、ylim

某些高级绘图函数已经包含了默认的标题和标签。可以通过plot()语句或单独的par()语句中添加ann=FLASE来移除他们。

3.4.1 标题

使用title()函数为图形添加标题和坐标轴标签。调用格式为:
title(main = "main title", sub = "sub-title", xlab = "x-axis label", ylab = "y=axis label")

3.4.2 坐标轴

可以使用函数axis()来创建中自定义的坐标轴,而非使用R中的默认坐标轴。其格式为:
axis(side, at = , labels = , pos = , lty = ,col = , las = , tck = , …)
  
  参数axes=FALSE将禁用高级绘图函数自动生成的坐标轴。包括坐标轴框架线。
  参数frame.plot=TRUE将恢复坐标轴框架线。
  参数xaxt="n"和yaxt="n"将分别禁用X轴和Y轴,会留下框架线,只是去除了刻度。

在代码清单中,有一个round()函数,其主要作用是取两位小数。如round(1.235, digits = 2)返回的值为:1.24。其中digits可省略,直接写成round(1.235,2)。

次要刻度线

添加次要刻度线,需要使用Hmisc包中的mino.tick()函数,在载入Hmisc包之前,需载入lattice、survival、Formula、ggplot2包。
minor.tick(nx = n, ny = n, tick.ratio = n)

nx和ny分别指定了X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。tick.ratio表示次要刻度线相对于主刻度线的大小比例。当前的主刻度线长度可使用par("tck")获取。

3.4.3 参考线

abline(h = yvalues, v = xvalues)

为图形添加参考线。也可以指定其他图形参数(线条类型,颜色和宽度等等)

注意:在输入书中两串代码时,得到的结果并不是,如图中所说的位置添加了参考线,反而在意料之外的位置,出现了两条线,这是为什么?复习时,需要重新检查。

3.4.4 图例

使用legend()函数来添加图例。格式如下:

legend(location, title, legend, …)

3.4.5 文本标注

text()和mtext()函数。text()函数还可以标示图形中的点。我们只需要制定一系列x,y坐标作为位置参数,同时以向量的形式指定要放置的文本。x、y和文本标签向量的长度应当相同。

数学标注

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

3.5 图形的组合

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

代码清单3-4展示了图形布局的精细控制,我们可随自己的想法调整想要展示的图形。

问:P61中的第二行代码,创建一个矩阵式什么意思?





第三章学习笔记及代码清单

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

推荐阅读更多精彩内容