溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

R語言中的顏色及色板怎么設(shè)置

發(fā)布時間:2022-01-20 10:50:21 來源:億速云 閱讀:1416 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“R語言中的顏色及色板怎么設(shè)置”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“R語言中的顏色及色板怎么設(shè)置”文章能幫助大家解決問題。

可視化數(shù)據(jù)時,色彩往往是最欠考慮的因素。的確,在一個圖中,數(shù)據(jù)的選擇和圖表類型的確定才是最重要,最需要確定的因素。但是,適當(dāng)?shù)倪x擇顏色不僅僅能使數(shù)據(jù)圖的閱讀者賞心悅目,而且有助于圖中數(shù)據(jù)關(guān)系的呈現(xiàn),使得整個圖表更有說服力。

1.R語言中的默認(rèn)顏色

R中可以通過定義col參數(shù)自定義顏色。有以下四種方法進(jìn)行設(shè)置,是等價的:

  1. 數(shù)字:(如1代表當(dāng)前palette的第1種顏色,2代表當(dāng)前palette的第2種顏色等); 

  2. 顏色名:(如”red”,”blue”)、可以使用colors()獲得所有顏色名稱列表

  3. RGB:使用rgb()函數(shù)得到的返回值 rgb(1, 0, 0)

  4. 十六進(jìn)制顏色代碼:#FF0000

barplot(1:4, col = c(2, "red", rgb(1, 0, 0), "#FF0000"))

人們不禁要問,不同數(shù)字代表的都是什么顏色?

通過palette()函數(shù),可以看到在當(dāng)前調(diào)色板下,第一種顏色是黑色,第二種顏色是紅色。這個調(diào)色板共有8種顏色,當(dāng)使用顏色數(shù)大于8時,會從頭開始。

palette()## [1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
## [8] "gray"


調(diào)色板當(dāng)然是可以改變的,比如用系統(tǒng)中的彩虹調(diào)色板。此時,第二位可就不是紅色了。

palette(rainbow(12))
barplot(1:4, col = c(2, "red", rgb(1, 0, 0), "#FF0000"))

通過再次將palette設(shè)置為”default”,可以得到默認(rèn)調(diào)色板。

palette("default")

2.R預(yù)置色彩系統(tǒng)的色板

其實在R語言的色彩系統(tǒng)中,有兩大類顏色系統(tǒng),一類是預(yù)設(shè)的調(diào)色盤,通過調(diào)色盤,你可以獲取任意數(shù)量的色彩組合。

R語言的預(yù)設(shè)調(diào)色板一共有五個:

rainbow
heat.colors
terrain.colors
topo.colors
cm.colors

這五個調(diào)色板就像是一個大染缸一樣,排列著無數(shù)的色彩組合。取色也很簡單,就是使用預(yù)設(shè)色盤名稱+色彩數(shù)據(jù)即可:

rainbow(10)
 [1] "#FF0000FF" "#FF9900FF" "#CCFF00FF" "#33FF00FF" "#00FF66FF" "#00FFFFFF"
 [7] "#0066FFFF" "#3300FFFF" "#CC00FFFF" "#FF0099FF"

以上既是通過名稱+數(shù)量的方式獲取的一組10個顏色,同樣我們可以通過scales包中show_col函數(shù)查看具體的顏色效果:

library(scales)
show_col(rainbow(10),labels=T) #labels控制是否顯示HEX格式的色值信息.

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

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")

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

五種顏色調(diào)用方法非常簡單,名稱+數(shù)量就可以。而且你也可以通過文本函數(shù)將不同色盤中截取的顏色相互混合使用。

dev.off()#關(guān)閉上次的繪圖面板
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)
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")

3.產(chǎn)生漸變顏色colorRamp()和colorRampPalette():

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

colorRampPalette()返回指定數(shù)量的顏色值,兩個方法可以達(dá)到相同的效果:

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")

4.RColorBrewer包色板

雖然說RColorBrewer包中實際用到的就只有brewer.pal()函數(shù),但是包中的兩個優(yōu)點使得其非常實用。一是,包中顏色板被劃分為序列型(sequential)、離散型(diverging)、分類型(qualitative)這三種基本能滿足統(tǒng)計作圖需要的類型;二是,顏色都比較協(xié)調(diào)。更多指引見其官網(wǎng)ColorBrewer。

require("RColorBrewer")
display.brewer.all()

取出對應(yīng)色板顏色,以及數(shù)量:

brewer.pal(9, "Purples")
[1] "#FCFBFD" "#EFEDF5" "#DADAEB" "#BCBDDC" "#9E9AC8" "#807DBA" "#6A51A3" "#54278F" "#3F007D"

關(guān)于“R語言中的顏色及色板怎么設(shè)置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI