1、R中颜色的表示方式

1.1 颜色的名字

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
str(colors())
# chr [1:657] "white" "aliceblue" "antiquewhite" ...

head(colors()[1:10])
# [1] "white"         "aliceblue"     "antiquewhite" 
# [4] "antiquewhite1" "antiquewhite2" "antiquewhite3"

set.seed(111)
cols = sample(colors(), 5)
numbers = 1:5; names(numbers) = cols
barplot(numbers, col=cols)

关于透明色,虽然不在这657个颜色当中,可以通过transparent指定。

1.2 十六进制颜色代码

  • 16进制的颜色代码是将RGB颜色值的进制转换的表示方式,使用方便,颜色丰富,更加常用
  • RGB颜色值与十六进制颜色码转换工具:https://www.sioe.cn/yingyong/yanse-rgb-16/
1
2
3
rainbow(3)
# [1] "#FF0000" "#00FF00" "#0000FF"
barplot(c(1:7), col=rainbow(7))

2、色板系列

在理解上述颜色表示方法后,在实际绘图时,一般不会一一手动寻找合适的颜色,而是通过一些R包、网站提供好的,美观的颜色组合,即调色板(palette),可供使用。下面罗列下我目前常用的几种方式。

2.1 RColorBrewer包

1
2
3
4
5
6
7
8
# install.packages("RColorBrewer")
library(RColorBrewer)
display.brewer.all() #default: type="all"

#仅展示离散类颜色组合
display.brewer.all(type="qual")
#展示具体某一个组合
display.brewer.pal(n=12, name = 'Set3')

如上图所示,这个包提供了三类色板: (1)sequential【上】:渐变型(生成由浅入深的渐变色,适用于标注数值大小的情况); (2)qualitative【中】:离散型(生成彼此差异明显的颜色,适用于分类数据); (3)diverging【下】:发散型(生成深色强调两端、浅色表示中部的颜色,适用于标注数据中的离群点。)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
##(1)对于离散类颜色,会自动返回前n个颜色
brewer.pal(n = 9, name = "Set1")
# [1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3" "#FF7F00" "#FFFF33" "#A65628" "#F781BF" "#999999"
brewer.pal(n = 3, name = "Set1")
# [1] "#E41A1C" "#377EB8" "#4DAF4A"

##(2)对于发散型和渐变型,会考虑整体配色方案,自动返回最合适的n个颜色
brewer.pal(n = 9, name = "Blues")
# [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5" "#08519C" "#08306B"
brewer.pal(n = 3, name = "Blues")
# [1] "#DEEBF7" "#9ECAE1" "#3182BD"

2.2 colorbrewer配色网站

  • https://colorbrewer2.org/
  • 非常值得安利的一个配色网站,也是大体分为如上三种色板。
  • 其实使用起来很简单,就不总结了。也可以参看别人的笔记:https://zhuanlan.zhihu.com/p/27167989

2.3 ggsci包

  • 自动对接ggplot2包,提供期刊杂志级别的配色方案;
  • 使用十分简单,配合ggplot,只需要选择color还是fill,会自动根据变量类别确认配色;
  • 具体使用方法也不介绍了,安装、加载,配合ggplot绘图即可。可参看官方教程:https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html
部分配色方案

2.4 其它备选方案

  • (1)viridis包 特点:色盲友好 官方介绍:https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html 中文介绍:https://zhuanlan.zhihu.com/p/81571392

  • (2)paletteer包 特点:集成了目前已知所有配色R包的配色方案

    使用网址:https://emilhvitfeldt.github.io/r-color-palettes/discrete.html

    官方介绍:https://github.com/EmilHvitfeldt/paletteer 中文介绍:https://www.yuque.com/xiaojiewanglezenmofenshen/dbwkg1/ilbqqz