c语言调色板5个参数,R语言中的颜色以及色板
可視化數據時,色彩往往是最欠考慮的因素。的確,在一個圖中,數據的選擇和圖表類型的確定才是最重要,最需要確定的因素。但是,適當的選擇顏色不僅僅能使數據圖的閱讀者賞心悅目,而且有助于圖中數據關系的呈現,使得整個圖表更有說服力。這篇文章將簡單介紹R語言中的色彩和調色板相關package和函數。
1.R語言中的默認顏色
R中可以通過定義col參數自定義顏色。有以下四種方法進行設置,是等價的:
數字:(如1代表當前palette的第1種顏色,2代表當前palette的第2種顏色等);
顏色名:(如”red”,”blue”)、可以使用colors()獲得所有顏色名稱列表
RGB:使用rgb()函數得到的返回值rgb(1, 0, 0)
十六進制顏色代碼:#FF0000
barplot(1:4, col = c(2, "red", rgb(1, 0, 0), "#FF0000"))
人們不禁要問,不同數字代表的都是什么顏色?
通過palette()函數,可以看到在當前調色板下,第一種顏色是黑色,第二種顏色是紅色。這個調色板共有8種顏色,當使用顏色數大于8時,會從頭開始。
palette()## [1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"## [8] "gray"
調色板當然是可以改變的,比如用系統中的彩虹調色板。此時,第二位可就不是紅色了。
palette(rainbow(12))
barplot(1:4, col = c(2, "red", rgb(1, 0, 0), "#FF0000"))
通過再次將palette設置為”default”,可以得到默認調色板。
palette("default")
2.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格式的色值信息.
接下來我用一個版面矩陣將五個色盤顏色全部顯示出來:
par(mfrow=c(1,5),mar=c(0.5,0.5,2,0.5),xaxs="i",yaxs="i")
n
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")
運行以上代碼之后,你會看到繪圖面板上出現的五個色板色彩過渡效果,第一個rainbow是運用最為頻繁的的色板,也是我們所熟知的彩虹七色,其余四個是截取rainbow色斑的某一段暖色系、冷色系或者單色做的漸變過渡。
五種顏色調用方法非常簡單,名稱+數量就可以。而且你也可以通過文本函數將不同色盤中截取的顏色相互混合使用。
dev.off()#關閉上次的繪圖面板
par(mfrow=c(2,1),mar=c(0.5,0.5,2,0.5),xaxs="i",yaxs="i")
a
b
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
barplot(rep(1,times=10),col=c,border=c,axes=F,main="topo&heat 10")
3.產生漸變顏色colorRamp()和colorRampPalette():
colorRamp()和colorRampPalette()都可用于建立顏色板。想象一下你現在有一個色板,色板上有紅色,藍色,和白色,你就可以用colorRamp()和colorRampPalette()基于這三個顏色就行調色,兩者的不同在于,colorRamp() 可以指定一個小數,返回一個指定的顏色值,需要用rgb方法轉換;
colorRampPalette()返回指定數量的顏色值,兩個方法可以達到相同的效果:
par(mfrow = c(1, 2))
b2p1
b2p2
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()函數,但是包中的兩個優點使得其非常實用。一是,包中顏色板被劃分為序列型(sequential)、離散型(diverging)、分類型(qualitative)這三種基本能滿足統計作圖需要的類型;二是,顏色都比較協調。更多指引見其官網ColorBrewer。
require("RColorBrewer")display.brewer.all()
取出對應色板顏色,以及數量:
brewer.pal(9, "Purples")
[1] "#FCFBFD" "#EFEDF5" "#DADAEB" "#BCBDDC" "#9E9AC8" "#807DBA" "#6A51A3" "#54278F" "#3F007D"
總結
以上是生活随笔為你收集整理的c语言调色板5个参数,R语言中的颜色以及色板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mqtt使用一
- 下一篇: 员工办事指南(社保公积金)