R語言配色方案: Colors in R

前言:巧妙的色彩搭配,能夠繪制出更具審美價值的圖片,令人耳目一新。
本文主要講解比較受歡迎的R包配色方案。

(一):RColorBrewer 包

調(diào)色板有3種類型:連續(xù)型調(diào)色板、離散型調(diào)色板和定性調(diào)色板。

連續(xù)型調(diào)色板,適用于從低到高(漸變)的有序數(shù)據(jù)。
Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu YlOrBr, YlOrRd
離散型調(diào)色板,同時強(qiáng)調(diào)中端臨界值和數(shù)據(jù)范圍兩端的極端值。
BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral
定性調(diào)色板,適用于名義型或分類型變量。 它們并不代表組之間的大小差異。
Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3

rm(list = ls())
install.packages("RColorBrewer")
library(RColorBrewer)
# 繪制 RColorBrewer 調(diào)色板
display.brewer.all()
head(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
圖片.png

繪圖應(yīng)用[1]

# 通過指定名字來查看調(diào)色板
display.brewer.pal(n = 8, name = 'RdBu')
# 十六進(jìn)制顏色規(guī)格
brewer.pal(n = 8, name = "RdBu")
[1] "#B2182B" "#D6604D" "#F4A582" "#FDDBC7" "#D1E5F0" "#92C5DE" "#4393C3" "#2166AC"
# RColorBrewer繪制條形圖
barplot(c(2,5,7), col=brewer.pal(n = 3, name = "RdBu"))
圖片.png
Rplot02.png

(二):Wes Anderson包

Wes Anderson,電影導(dǎo)演韋斯·安德森,善于運(yùn)用色彩。
最欣賞的一點(diǎn)是他以色調(diào)和對稱構(gòu)圖來講述惟妙惟肖的故事情節(jié),而不是使用過多復(fù)雜花哨的拍攝方式詮釋自己的才能。[1]

install.packages("wesanderson")
library(wesanderson)
# See all palettes
names(wes_palettes)
[1] "BottleRocket1"  "BottleRocket2"  "Rushmore1"      "Rushmore"       "Royal1"        
[6] "Royal2"         "Zissou1"        "Darjeeling1"    "Darjeeling2"    "Chevalier1"    
[11] "FantasticFox1"  "Moonrise1"      "Moonrise2"      "Moonrise3"      "Cavalcanti1"   
[16] "GrandBudapest1" "GrandBudapest2" "IsleofDogs1"    "IsleofDogs2" 

繪圖應(yīng)用[2]

barplot(c(2,5,7), col = wes_palette(n=3, name="GrandBudapest1")) # 此處英文有誤
library(ggplot2)
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + 
  geom_point(size = 2) + 
  scale_color_manual(values = wes_palette(n=3, name="GrandBudapest1"))
Rplot03.png

Rplot04.png

(三):創(chuàng)建n個連續(xù)顏色的向量

可以使用函數(shù)rainbow(n), heat.colors(n), terrain.colors(n), topo.colors(n)和cm.colors(n)生成n個連續(xù)顏色的向量
繪圖應(yīng)用[3]

#Create a vector of n contiguous colors
# Use rainbow colors
barplot(1:5, col=rainbow(5))
# Use heat.colors
barplot(1:5, col=heat.colors(5))
# Use terrain.colors
barplot(1:5, col=terrain.colors(5))
# Use topo.colors
barplot(1:5, col=topo.colors(5))
# Use cm.colors
barplot(1:5, col=cm.colors(5))
  • Rplot06.png

(四):產(chǎn)生漸變顏色colorRamp()和colorRampPalette()[2]

colorRamp()和colorRampPalette()都可用于建立顏色板。想象一下你現(xiàn)在有一個色板,色板上有紅色,藍(lán)色,和白色,你就可以用colorRamp()和colorRampPalette()基于這三個顏色就行調(diào)色,兩者的不同在于,colorRamp() 可以指定一個小數(shù),返回一個指定的顏色值,需要用rgb方法轉(zhuǎn)換;
colorRampPalette()返回指定數(shù)量的顏色值,兩個方法可以達(dá)到相同的效果:

繪圖應(yīng)用[4]

par(mfrow = c(1, 2))
b2p1 <- colorRampPalette(c("red", "white","blue"))
b2p2 <- colorRamp(c("red", "white","blue"))
barplot(rep(1, 12), axes=F, col = b2p1(12), border = b2p1(12), 
        main = "colorRampPalette")

rgb( b2p2(seq(0, 1, length = 12)), max = 255)
barplot(rep(1, 12), axes=F,col = rgb( b2p2(seq(0, 1, length = 12)), max = 255),
        border = rgb( b2p2(seq(0, 1, length = 12)), max = 255), main = "colorRamp")
  • Rplot05.png

參考資料:


  1. Wes Anderson's Colour Palettes - 從電影中尋找配色靈感 | Lucca ?

  2. R語言中的顏色以及色板 ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容