Steem 和 R 语言:跟大鹏学 R 语言(16)颜色
本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。
前情回顾:
- 预告:“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)点和线
颜色参数col
(color的缩写)可以设为颜色的名称,比如蓝色(图3.8)。
plot(x = mydata2$year, y = mydata2$Sep, type = "l", lty = 2,
col = 'blue')
图 3.8: plot()函数示例:蓝色数据点.
R认识哪些颜色呢?输入并运行:
colors()
## [1] "white" "aliceblue"
## [3] "antiquewhite" "antiquewhite1"
## [5] "antiquewhite2" "antiquewhite3"
## [7] "antiquewhite4" "aquamarine"
## [9] "aquamarine1" "aquamarine2"
## [11] "aquamarine3" "aquamarine4"
## ......
## [653] "yellow1" "yellow2"
## [655] "yellow3" "yellow4"
## [657] "yellowgreen"
有657种颜色名称可以使用。趁此机会学一下外语吧,有些颜色名称听都没听说过。
小贴士 3.3 R的颜色代码和常用绘图参数。上面板是按编号n排序,中面板是按照色调和饱和度排序,每个色块上标出了n值。调用时 col = colors[n]即可。下面板左边是几个常用的色彩函数,右边是绘图参数的线性(lty)和点状(pch)的取值。
我们看看这657种颜色中第26个颜色叫什么名字:
colors()[26]
## [1] "blue"
正是蓝色。col = colors()[26]
这个参数设置跟col = 'blue'
是完全等同的。我们可以用颜色编号的方法,给上图的数据点染上不同的颜色。我们有39个数据点,那么我们依次染上第27到65个颜色(图3.9):
图 3.9: plot()函数示例:多色数据点.
从这一刻起,R 开始显得惊艳了。
这里我们用cex
参数(character expansion的缩写)来设定数据点的绘制尺寸,值越大,点画得就越大。
从名字挑颜色不够直观,经常是想起了颜色却叫不出名字,看见了英文名字却不知道是什么颜色。没关系,我们再次请demo()
小助理来帮忙:
demo(colors)
按照提示按回车键,就会看到颜色连同名称的展示。
demo()
函数够酷。然而,并非所有函数都可以请demo()
来帮忙的。运行:
demo()
会看到一个表格,列出了可供展示的函数。例如,我们看到其中有persp
, 那么可以运行:
demo(persp)
将来我们学到函数和扩展包时,demo()
小助理还会发挥更大的作用,到时候再说吧。
刚才我们给数据点染上颜色后,发现选的这些颜色对比不是很明显。R提供了多种配色方案函数可以选用,比如彩虹函数rainbow()
。
rainbow(n = 39)
## [1] "#FF0000FF" "#FF2700FF" "#FF4E00FF" "#FF7600FF"
## [5] "#FF9D00FF" "#FFC400FF" "#FFEB00FF" "#EBFF00FF"
## [9] "#C4FF00FF" "#9DFF00FF" "#76FF00FF" "#4EFF00FF"
## [13] "#27FF00FF" "#00FF00FF" "#00FF27FF" "#00FF4EFF"
## [17] "#00FF76FF" "#00FF9DFF" "#00FFC4FF" "#00FFEBFF"
## [21] "#00EBFFFF" "#00C4FFFF" "#009DFFFF" "#0076FFFF"
## [25] "#004EFFFF" "#0027FFFF" "#0000FFFF" "#2700FFFF"
## [29] "#4E00FFFF" "#7600FFFF" "#9D00FFFF" "#C400FFFF"
## [33] "#EB00FFFF" "#FF00EBFF" "#FF00C4FF" "#FF009DFF"
## [37] "#FF0076FF" "#FF004EFF" "#FF0027FF"
每个字符串代表一个颜色。彩虹函数要求给参数n设定一个整数值,只有这样R才知道该把彩虹的色带平均分割成几种颜色。我们现在有39个点,那么就让n = 39
,看看能画出怎样的彩虹(图3.10)。
plot(x = mydata2$year, y = mydata2$Sep, type = "p", pch = 20,
col = rainbow(n = 39), cex = 3)
图 3.10: plot()函数示例:col参数彩虹数据点.
请用example()
小助理来调出rainbow()
函数的示例。可以看到,除了rainbow()
外,还有几个类似的色彩函数,用法也类似。小贴士3.3展示了他们的色带范围。
虽然这些颜色我还勉强可以辨别 但是真的有点不敢相信我的Q就是R的未来 还是不该活在当下直接穿越去未来吧~