Market

Steem 和 R 语言:跟大鹏学 R 语言(16)颜色

1 comment

dapeng
68
6 months agoSteemit2 min read

本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。

前情回顾:

颜色参数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展示了他们的色带范围。

Comments

Sort byBest