您好,登錄后才能下訂單哦!
這篇文章主要介紹“R語言中的顏色及色板怎么設(shè)置”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“R語言中的顏色及色板怎么設(shè)置”文章能幫助大家解決問題。
可視化數(shù)據(jù)時,色彩往往是最欠考慮的因素。的確,在一個圖中,數(shù)據(jù)的選擇和圖表類型的確定才是最重要,最需要確定的因素。但是,適當(dāng)?shù)倪x擇顏色不僅僅能使數(shù)據(jù)圖的閱讀者賞心悅目,而且有助于圖中數(shù)據(jù)關(guān)系的呈現(xiàn),使得整個圖表更有說服力。
R中可以通過定義col參數(shù)自定義顏色。有以下四種方法進(jìn)行設(shè)置,是等價的:
數(shù)字:(如1代表當(dāng)前palette的第1種顏色,2代表當(dāng)前palette的第2種顏色等);
顏色名:(如”red”,”blue”)、可以使用colors()獲得所有顏色名稱列表
RGB:使用rgb()函數(shù)得到的返回值 rgb(1, 0, 0)
十六進(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")
其實在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")
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")
雖然說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è)資訊頻道,小編每天都會為大家更新不同的知識點。
免責(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)容。