在用R繪圖時,顏色設(shè)置是美化過程中不可缺少的一步,這次簡單的學習與總結(jié)一下。
一、在R中顏色的表示
(1) 顏色的名字 built-in color names
- R內(nèi)置了657種顏色的名字可供使用
str(colors())
# chr [1:657] "white" "aliceblue" "antiquewhite" ...
head(colors()[1:10])
# [1] "white" "aliceblue" "antiquewhite"
# [4] "antiquewhite1" "antiquewhite2" "antiquewhite3"
- 具體每一種顏色名字代表什么顏色,可以從這個網(wǎng)頁中查詢:http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf
set.seed(111)
cols = sample(colors(), 5)
numbers = 1:5; names(numbers) = cols
barplot(numbers, col=cols)

- 關(guān)于透明色,雖然不在這657個顏色當中,可以通過
transparent指定,R可以識別的。
barplot(c(1:3), col=c("chartreuse", "blue4", "transparent"))

(2)十六進制顏色代碼 hexadecimal color code
- 16進制的顏色代碼是將RGB顏色值的進制轉(zhuǎn)換的表示方式,使用起來更方便,表示的顏色也更豐富。所以在R中更常用這種方式指代顏色。
RGB顏色值與十六進制顏色碼轉(zhuǎn)換工具:https://www.sioe.cn/yingyong/yanse-rgb-16/
rainbow(3)
# [1] "#FF0000" "#00FF00" "#0000FF"
barplot(c(1:7), col=rainbow(7))

二、調(diào)色板
在理解上述顏色表示方法后,在實際繪圖時,一般不會一一手動尋找合適的顏色,而是通過一些R包、網(wǎng)站提供好的,美觀的顏色組合,即調(diào)色板(palette),可供使用。下面羅列下我目前常用的幾種方式。
2.1 RColorBrewer包
# install.packages("RColorBrewer")
library(RColorBrewer)
display.brewer.all() #default: type="all"

- 如上圖所示,這個包提供了三類色板:
(1)sequential【上】:漸變型(生成由淺入深的漸變色,適用于標注數(shù)值大小的情況);
(2)qualitative【中】:離散型(生成彼此差異明顯的顏色,適用于分類數(shù)據(jù));
(3)diverging【下】:發(fā)散型(生成深色強調(diào)兩端、淺色表示中部的顏色,適用于標注數(shù)據(jù)中的離群點。)
#僅展示離散類顏色組合
display.brewer.all(type="qual")
#展示具體某一個組合
display.brewer.pal(n=12, name = 'Set3')
- 在實際使用時,需要注意色板的選擇與數(shù)量的選擇
(1)對于離散類顏色,會自動調(diào)用前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"
display.brewer.pal(n=9, name = 'Set3') #left
display.brewer.pal(n=3, name = 'Set3') # right

(2)對于發(fā)散型和漸變型,會考慮整體配色方案,自動調(diào)用最合適的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配色網(wǎng)站
- https://colorbrewer2.org/
- 非常值得安利的一個配色網(wǎng)站,也是大體分為如上三種色板。
- 其實使用起來很簡單,就不總結(jié)了。也可以參看別人的筆記:https://zhuanlan.zhihu.com/p/27167989

2.3 ggsci包
- 自動對接ggplot2包,提供期刊雜志級別的配色方案;
- 使用十分簡單,配合ggplot,只需要選擇color還是fill,會自動根據(jù)變量類別確認配色;
- 具體使用方法也不介紹了,安裝、加載,配合ggplot繪圖即可??蓞⒖垂俜浇坛蹋?a target="_blank">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://github.com/EmilHvitfeldt/paletteer
中文介紹:https://www.yuque.com/xiaojiewanglezenmofenshen/dbwkg1/ilbqqz
