Steem 和 R 语言:跟大鹏学 R 语言(17)颜色
黯然销魂者,唯别而已矣。
这是“江郎才尽”的江郎写出来的著名诗句。
本文是最后一次连载《学 R》一书的内容。这书里贯穿了金庸元素。本文是连载第 17 篇。17 这个数字不常用,金庸的小说里,只有杨过的“黯然销魂掌”是17掌。
黯然销魂者,唯别而已矣。
前情回顾:
- 预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始
- Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装
- Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算
- Steem 和 R 语言:跟大鹏学 R 语言(3)变量和向量
- Steem 和 R 语言:跟大鹏学 R 语言(4)作图和统计
- Steem 和 R 语言:跟大鹏学 R 语言(5)表白
- Steem 和 R 语言:跟大鹏学 R 语言(6)读取文件
- Steem 和 R 语言:跟大鹏学 R 语言(7)读取文件(续)
- Steem 和 R 语言:跟大鹏学 R 语言(8)懒人起手式
- Steem 和 R 语言:跟大鹏学 R 语言(9)选取单元格
- Steem 和 R 语言:跟大鹏学 R 语言(10)行和列
- Steem 和 R 语言:跟大鹏学 R 语言(11)整行和整列
- Steem 和 R 语言:跟大鹏学 R 语言(12)保存文件
- Steem 和 R 语言:跟大鹏学 R 语言(13)免安装的R
- Steem 和 R 语言:跟大鹏学 R 语言(14)作图
- Steem 和 R 语言:跟大鹏学 R 语言(15)点和线
- Steem 和 R 语言:跟大鹏学 R 语言(16)颜色
有了颜色参数,我们的作图本领更加强大,可以重新考虑一下 mydata2 这个数据框了。
实际上,mydata2的每个数据点都包含了三个内容:“年份”,“月份”,“CO2浓度”。这是个三维数据。我们前面由于刚刚入门,受作图能力所限,只能把数据“降维打击”成了二维,只保留了“年份”和“浓度”两个维度(当然也可以只保留“月份”和“浓度”,或“年份”和“月份”,但后者实在无趣)来作图。既然每个点都可以指定一个特有的颜色,那么就可以用颜色来表示这些数据点的第三个维度。
下面,我们将作一个散点图,图上每个点的横坐标是“月份”,纵坐标是“年份”,每个点的颜色表示“浓度”,在色带上,越偏向紫色就表示浓度越大(紫移),越偏向红色就表示浓度越小(红移)。
我们先用 unlist()
函数(见第8.1节)把“浓度”这个数据框转换成一个向量,作为第一个维度:
myco2 <- unlist(mydata2[, 1:12])
myco2 <- round(myco2)
为了简化后面的操作,我们用 round()
函数对浓度数据进行了四舍五入。
然后,用一个向量myyear
来存储第二个维度“年份”:
myyear <- rep(mydata2$year, 12)
rep()
是重复函数(repeat的缩写)。由于每年12个月,所以,每个年份重复12次。
最后,用向量 mymonth
来存储第三个维度“月份”,每个月份重复的次数是数据里出现的年数,也就是行数:
mymonth <- rep(1:12, each = nrow(mydata2))
三个维度的数据准备完毕,下面准备一下每个数据点的颜色。我们用rainbow()
函数根据浓度数值的大小给数据点确定一个颜色:
n <- diff(range(myco2)) # 彩虹分割的颜色数量
mycolor <- rainbow(n)[myco2 - min(myco2) + 1]
一切准备就绪,可以作图了:
plot(x = mymonth, y = myyear,
col = mycolor, cex = 10, pch = 15)
图 3.11: plot()函数示例:三维图.
得到的图3.11里,沿着横向看就是CO2浓度的逐月变化,沿纵向看就是年际变化。我们的图升维了。
事实上,R 里有另外一个函数image(),可以一步做出类似的颜色图(图3.12)。
image(t(as.matrix(mydata2[1:12])), col = rainbow(n))
图 3.12: image()函数示例.
image()
函数将在第5.4节再度露面,届时我们再做进一步介绍。
plot()
函数的参数很多,那么就允许数据有更多维度。例如,把数据来源作为第四个维度,那么我们可以用数据点的不同大小来表示(cex
参数),亚洲的数据用大号数据点,欧洲用中号等等。我们可以随意对图进行维度改造了!
要想对作图进行更精细的控制,可以使用plot()
函数的其他参数、par()
函数、axis()
函数等。这个我们在后面会详细介绍,如果你迫不及待的话,请你自己找F1小助理问问吧。
练习3.1 请绘制1959年到1997年二氧化碳全年平均浓度的逐年变化散点图,线形为“p”,数据点形状为实心三角形,数据点颜色为黄色。
Hi ~ I'm a robot of red2018.I just upvoted your post!
Please come visit me here: https://steemit.com/@red2018
Thanks so much~!!
Hi ~ I'm a robot of lynnhua.I just upvoted your post!
Please come visit me here: https://steemit.com/@lynnhua
Thanks so much~!!