關於配色的話題,已經聊過很多次了,但是就像是之前說過的,對於圖形視覺化而言,配色決定著作品的“顏值”,談再多次都不嫌多。

今天是R語言配色系統綜合篇的上篇(當然是有下篇啦,下篇將會教你如何優雅的提取各種高大上配色主題,作為己用。經過幾天的研究,小魔方已經發現瞭如果將各種高質量配色包中的主題色板透過函式的形式在高階繪圖系統和低階繪圖系統之間相互共享)。

今天的內容主要包含兩部分:

R預置色彩系統的色板

R語言自定義顏色呼叫

其實在R語言的色彩系統中,有兩大類顏色系統,一類是預設的調色盤,透過調色盤,你可以獲取任意數量的色彩組合。

R語言的預設調色盤一共有五個:

rainbow

heat。colors

terrain。colors

topo。colors

cm。colors

這五個調色盤就像是一個大染缸一樣,排列著無數的色彩組合。取色也很簡單,就是使用預設色盤名稱+色彩資料即可:

rainbow(10)

[1] “#FF0000FF” “#FF9900FF” “#CCFF00FF” “#33FF00FF” “#00FF66FF” “#00FFFFFF”

[7] “#0066FFFF” “#3300FFFF” “#CC00FFFF” “#FF0099FF”

以上既是透過名稱+數量的方式獲取的一組10個顏色,同樣我們可以透過scales包中show_col函式檢視具體的顏色效果:

library(scales)

show_col(rainbow(10),labels=T)#labels控制是否顯示HEX格式的色值資訊。

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

接下來我用一個版面矩陣將五個色盤顏色全部顯示出來:

par(mfrow=c(1,5),mar=c(0。5,0。5,2,0。5),xaxs=“i”,yaxs=“i”)

n<-1000

barplot(rep(1,times=n),col=rainbow(n),border=rainbow(n),horiz=T,axes=F,main=“Rainbow Color”)

barplot(rep(1,times=n),col=heat。colors(n),border=heat。colors(n),horiz=T,axes=F,main=“Heat。Colors”)

barplot(rep(1,times=n),col=terrain。colors(n),border=terrain。colors(n),horiz=T,axes=F,main=“Terrain。Colors”)

barplot(rep(1,times=n),col=topo。colors(n),border=topo。colors(n),horiz=T,axes=F,main=“Topo。Colors”)

barplot(rep(1,times=n),col=cm。colors(n),border=cm。colors(n),horiz=T,axes=F,main=“Cm。Colors”)

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

執行以上程式碼之後,你會看到繪圖面板上出現的五個色板色彩過渡效果,第一個rainbow是運用最為頻繁的的色板,也是我們所熟知的彩虹七色,其餘四個是擷取rainbow色斑的某一段暖色系、冷色系或者單色做的漸變過渡。

五種顏色呼叫方法非常簡單,名稱+數量就可以。而且你也可以透過文字函式將不同色盤中擷取的顏色相互混合使用。

dev。off()#關閉上次的繪圖面板

par(mfrow=c(2,1),mar=c(0。5,0。5,2,0。5),xaxs=“i”,yaxs=“i”)

a<-heat。colors(10)

b<-topo。colors(10)

barplot(rep(1,times=10),col=b,border=b,main=“Topo。Colors10”,axes=F)

barplot(rep(1,times=10),col=a,border=a,main=“Heat。Colors10”,axes=F)

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

dev。off()

c<-c(a[c(1,3,5,7,9)],b[c(2,4,6,8,10)])

barplot(rep(1,times=10),col=c,border=c,axes=F,main=“topo&heat 10”);box()

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

以上透過將兩個色板提取出來的顏色進行組合,創造出了新的色彩組合。

R語言自定義顏色呼叫

接下來介紹R語言的第二大色彩系統,自定義顏色。

R語言系統中內建了657中帶有自定義名稱的顏色(就是我們平時所熟知的blue、red、grey等)。

透過colors()函式可以檢視這657種顏色的色值及名稱類別資訊:

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

count函式列出了所有657中顏色名稱。

使用show_col函式可以檢視所有657中顏色的圖形顯示效果

show_col(cl,labels=F)#因為顏色數量太多,使用labels=F引數略去顏色色值資訊。

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

使用colorRampPalette函式可以自由呼叫任何一種自定義顏色。

colorRamp(colors, bias = 1, space = c(“rgb”, “Lab”), interpolate = c(“linear”, “spline”))

colorRampPalette(colors, 。。。)

color函式的介紹如上,具體的引數解釋可以透過?colorRampPalette檢視他的官方文件,這裡我們直接取色。

par(mfrow=c(1,4),mar=c(0。5,0。5,2,0。5),xaxs=“i”, yaxs=“i”)

n <- 1000

mycolors <- colorRampPalette(c(“red”, “green”))(n)

barplot(rep(1,times=n),col=mycolors,border=mycolors,horiz=T,axes=FALSE)

mycolors <- colorRampPalette(c(“blue”, “yellow”, “orange”))(n)

barplot(rep(1,times=n),col=mycolors,border=mycolors,horiz=T,axes=FALSE)

mycolors <- colorRampPalette(c( “white”, “gold”, “yellow”, “brown”), bias=1。2)(n)

barplot(rep(1,times=n),col=mycolors,border=mycolors,horiz=T,axes=FALSE)

mycolors <- colorRampPalette(c(“red”,“gold”, “yellow”, “grey”,“orange”), bias=1。2)(n)

barplot(rep(1,times=n),col=mycolors,border=mycolors,horiz=T,axes=FALSE)

dev。off()

R語言視覺化——預設配色系統及自定義色板

R語言視覺化——預設配色系統及自定義色板

除了這兩大色彩系統系統之外,R語言也支援直接以色值(HEX)形式輸入的顏色,只需使用c()函式生成色值組成的字元向量,R語言就可自動識別。

還有一些特殊用途的grey函式,hsv函式等等可以透過設定灰度或者色調、飽和度、亮度等等方式獲取顏色使用,這些由於過於繁瑣,這裡就略去了,甘感興趣的小盆友可以自己探索。

當然,這裡還沒有講解到那些已經做得很成熟的主題配色包,比如ggthemes(專為ggplot2開發的主題包)、RColorbrewer(裡面存放著大量高質量的配色方案)、以及ggtech(是一個科技主題的配色包,主要供ggplot函式呼叫)。

透過scales包中的brewer。col,我們可以提取出以上各包的配色主題,來用於我們的視覺化圖表中,不光是ggplot繪圖系統,即便是在基礎繪圖系統(base::plot)中也是可以呼叫這些色彩方案的,好了這裡先放個彩蛋,下期再見!

聯絡方式:

wechat:ljty1991

Mail:578708965@qq。com

個人公眾號:資料小魔方(datamofang)

團隊公眾號:EasyCharts

qq交流群:[魔方學院]553270834