1 RColorBrewer
工具包
该包是R中常用的颜色选取工具包,它具有简单易用的特点,对于不具备太多色彩理论的读者来说也十分友好。虽然该包主要是为地图上色而设计,但也可以用于其他用途。
library(RColorBrewer)
下面就逐一介绍该包的4个函数或数据集:
display.brewer.all()
使用该函数可以展示RColorBrewer
工具包中所有的颜色系列,如下:
par(plt = c(0.1,1,0,1))
display.brewer.all()
上图中,左侧是颜色系列的名称,右侧是对应的颜色。从图中可以看出,这些颜色系列共分为三类:
- 第一类颜色是单种颜色由浅到深的梯度变化,记作
seq
(sequential);该系列的颜色主要适用于连续型变量或有序分类变量;- 第二类颜色的彼此差异性较大,且不具备明显的等级关系,记作
qual
(qualitative);该系列的颜色主要适用于无序的分类变量;- 第三类颜色是两种颜色分别朝两个方向由浅到深的梯度变化,记作
div
(diverging);该系列的颜色主要适用于中间值具有特殊意义的连续变量或有序分类变量,如摄氏温度、Logistic模型的OR值等。
display.brewer.all()
函数的type
参数默认为all
,所以可以展示所有系列的颜色,若取值为seq
、qual
、div
,则分别展示相应类别的颜色系列。
par(plt = c(0.1,1,0,1))
display.brewer.all(type = "seq")
display.brewer.pal()
该函数展示特定系列的颜色,它共有两个参数:
display.brewer.pal(n, name)
- n:颜色分割的个数;
- name:颜色系列的名称。
以OrRd
系列颜色为例,当我们把它分割成6份,效果如下:
display.brewer.pal(6, "OrRd")
分割成9份的效果如下:
display.brewer.pal(9, "OrRd")
brewer.pal.info
每个系列的颜色能被分割的份数(即参数n
)都存在上限,当设置的参数n
超过上限时会出现提示,如OrRd
系列的上限是9。
brewer.pal.info
数据集储存了所有颜色系列的一些信息,包括分割上限:
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
brewer.pal()
该函数的参数名及含义与display.brewer.pal()
函数完全一致,但它输出对象是颜色的16进制编码,可以直接赋值给其他函数的颜色参数。
brewer.pal(5, "OrRd")
## [1] "#FEF0D9" "#FDCC8A" "#FC8D59" "#E34A33" "#B30000"
library(tidyverse)
library(sf)
data <- albersusa::counties_sf(proj = "laea") %>%
mutate(fips = as.character(fips)) %>%
left_join(socviz::county_data, by = c("fips" = "id"))
plot(data["hh_income"], nbreaks = 5,
breaks = "quantile",
pal = brewer.pal(5, "OrRd")) # 颜色参数