朋友们说我作图的配色还可以,这其实不是我的功劳,是因为 R 语言有许多非常优秀的调色板,本文就介绍一个非常流行的,我也经常在用的调色板 R 包:RColorBrewer。
安装
install.packages("RColorBrewer")
加载
library(RColorBrewer)
library(knitr)
初探
?RColorBrewer
在帮助页面可以看到以下信息:
brewer.pal(n, name)
display.brewer.pal(n, name)
display.brewer.all(n=NULL, type="all", select=NULL, exact.n=TRUE, colorblindFriendly=FALSE)
brewer.pal.info
数据框brewer.pal.info
记录了 RColorBrewer 包中所有调色板的信息,先查看一下:
kable(brewer.pal.info)
maxcolors | category | colorblind | |
---|---|---|---|
BrBG | 11 | div | TRUE |
PiYG | 11 | div | TRUE |
PRGn | 11 | div | TRUE |
PuOr | 11 | div | TRUE |
RdBu | 11 | div | TRUE |
RdGy | 11 | div | FALSE |
RdYlBu | 11 | div | TRUE |
RdYlGn | 11 | div | FALSE |
Spectral | 11 | div | FALSE |
Accent | 8 | qual | FALSE |
Dark2 | 8 | qual | TRUE |
Paired | 12 | qual | TRUE |
Pastel1 | 9 | qual | FALSE |
Pastel2 | 8 | qual | FALSE |
Set1 | 9 | qual | FALSE |
Set2 | 8 | qual | TRUE |
Set3 | 12 | qual | FALSE |
Blues | 9 | seq | TRUE |
BuGn | 9 | seq | TRUE |
BuPu | 9 | seq | TRUE |
GnBu | 9 | seq | TRUE |
Greens | 9 | seq | TRUE |
Greys | 9 | seq | TRUE |
Oranges | 9 | seq | TRUE |
OrRd | 9 | seq | TRUE |
PuBu | 9 | seq | TRUE |
PuBuGn | 9 | seq | TRUE |
PuRd | 9 | seq | TRUE |
Purples | 9 | seq | TRUE |
RdPu | 9 | seq | TRUE |
Reds | 9 | seq | TRUE |
YlGn | 9 | seq | TRUE |
YlGnBu | 9 | seq | TRUE |
YlOrBr | 9 | seq | TRUE |
YlOrRd | 9 | seq | TRUE |
行名,是调色板的名称,共有 35 个
maxcolors,调色板中的颜色数
category,调色板分类,有:div, qual, seq 三种
colorblind,对色盲是否友好
显示所有调色板:
display.brewer.all(n=NULL, type="all", select=NULL, exact.n=TRUE, colorblindFriendly=FALSE)
![c0e386290c46e6507eaba01e8b5c98c9.png](https://i-blog.csdnimg.cn/blog_migrate/5e764ac40f01c94c328321ee62be9d01.png)
可见,3 类调色板各有特色,分开来看:
连续型(sequential):单渐变色,一种颜色由浅到深。
离散型(divergent):双渐变色,一种颜色到另外一种颜色的渐变。
定性型(qualitative):区分色,几种区分度很高的颜色组合。
连续型(sequential)调色板有 18 个,每个 9 个渐变色,通常用来展示连续型变量的大小。
display.brewer.all(type = "seq")
![9e12c344023af1359fcab3b88fd3d4c1.png](https://i-blog.csdnimg.cn/blog_migrate/7995cd81ba654ce34e87a9323edc290c.png)
离散型(divergent)调色板有 9 个,每个有 11 种颜色,其特点是两端的颜色较深,而中间的颜色较浅,可用于展示极端数值。
display.brewer.all(type = "div")
![7c3dd3a99a6c2311be0dfe9f1d1701de.png](https://i-blog.csdnimg.cn/blog_migrate/79be69d5d1c91f8c6d593664aa682c2c.png)
定性型(qualitative)调色板有 8 个,每个的颜色从 8 个到 12 个不等,前两类调色板适合展示定量数据,而定性型调色板适合展示分类数据,其中“Paired”调色板是我比较喜欢用的。
display.brewer.all(type = "qual")
![e972657a029d7662899fb5ebe6f1d33e.png](https://i-blog.csdnimg.cn/blog_migrate/31fbdab2bdc07678688b5809b95800e6.png)
再探
还可以调用display.brewer.pal
函数来显示某一个调色板中的颜色,比如展示渐变色调色板:
display.brewer.pal(9, 'Blues')
![68b9783f8d8de7ada135ee6b92dc2e5e.png](https://i-blog.csdnimg.cn/blog_migrate/84a05e06d381405cc093d2c25eb456ad.png)
离散型调色板:
display.brewer.pal(11, 'BrBG')
![1b2d74f077450175f8f795d7d32fb11c.png](https://i-blog.csdnimg.cn/blog_migrate/e86a4ef6c91f06224e1013da682c608e.png)
定性型调色板:
display.brewer.pal(12, 'Paired')
![8a0f3bdd52675a3257c386ad8b449e2d.png](https://i-blog.csdnimg.cn/blog_migrate/99faf6675bfa9581a2b0a7fc3ccbcf52.png)
使用
前面展示了各种调色板长什么样,那要怎么使用这些调色板呢?可以通过brewer.pal
函数实现,比如从“Paired”调色板中连续取 5 个颜色:
brewer.pal(5, 'Paired')
## [1] "#A6CEE3" "#1F78B4" "#B2DF8A" "#33A02C" "#FB9A99"
当然,也可以挑选调色板中的任意颜色:
brewer.pal(12, 'Paired')[c(1, 3, 5)]
## [1] "#A6CEE3" "#B2DF8A" "#FB9A99"
总结
RColorBrewer 调色板包在 R 语言中是非常受欢迎的,它提供了 3 种不同类型的调色板:
连续型(sequential):单渐变色
离散型(divergent):双渐变色
定性型(qualitative):区分色
所谓使用调色板,本质上就是从调色板中得到预先定义好的颜色编码(通常是十六进制的),你完全可以从其他地方获得,但调色板提供了一定的便利。