前言:巧妙的色彩搭配,能夠繪制出更具審美價值的圖片,令人耳目一新。
本文主要講解比較受歡迎的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
繪圖應(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"))
(二):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"))
(三):創(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
參考資料: