14. R color space理論介紹和一個很方便的顏色可視化函數(shù)

color scales和legends

??顏色的物理學基礎是:顏色是不同波長的光的混合物。人們能感受到不同顏色及其變化是因為人眼有不同的顏色受體。

??HCL color space是基于色的三個屬性的顏色空間。\color{red}{Hub}:色相,即紅綠藍黑白等顏色;\color{red}{Chroma}:色度,又叫色飽和度,表示顏色的鮮艷程度,越高越鮮艷,飽和度為0會變成灰色。想象將某種顏色的顏料和灰顏料摻在一起,灰色(消色)成分比例越大,色度越低,顏色越不鮮艷,反之,色度越高,顏色越鮮艷;\color{red}{Luminance}:亮度,顏色的明亮程度,不同色相之間的亮度是白色最亮,黃色比橙色量亮,橙色比紅色亮,紅色比黑色亮。同一色相的亮度,加白色會變量,加黑色會變暗,但不管加啥,飽和度都會降低(白加黑=灰,太亮的或太暗的飽和度都會降低,一般中間亮度的飽和度最高)。亮度的物理學基礎是顏色的反射,白色的反射率為100%,黑色的反射率為0%。
??患有色盲的人顏色受體較少,所以在為紅綠色盲的人設計調色板的時候可以盡量減少紅綠色的對比。
??對色盲人士友好的R包:dichromat、colorBlindnessviridis等等。

??colorBindness包中有一個很有用的可視化顏色的函數(shù):displayAllColors(),這個函數(shù)的Usage如下(代碼塊中的第二個函數(shù)):

# 可視化給定的顏色集合
displayColors(col, ...)

# 給定顏色集合,同時展示正常人眼中的顏色和對應的某種顏色視覺缺陷人眼中的大概顏色
displayAllColors(col, types = c("deuteranope", "protanope", "desaturate"), ...)

col: 想展示的顏色集合
...:geom_tile()使用的其他參數(shù)
types: 顏色視覺缺陷的類型

舉例說明:
colorBlindness::displayColors(rainbow(6))

colorBlindness::displayAllColors(rainbow(6))
# 只要給定顏色,displayColors()可以很方面地可視化出來
displayColors(c("red","black","yellow","blue"))

小知識:RGB顏色編碼

??R、G、B分別代表三原色Red、Green、Blue,其他顏色都可以用這三種顏色按照不同的比例混合而成。在計算機中,這三種顏色分別可以用一個8位二進制數(shù)來表示不同的比例,也就是說(你回到了人類的世界,所以要選擇對人類友好的十進制來說事情了)RGB顏色編碼可以用三個[0,255](十進制)之間的整數(shù)組合起來表示一種顏色,例如(255,0,0)表示紅色。便于使用,這個十進制數(shù)組合可以也用一個十六進制數(shù)表示,例如#FF0000也表示紅色。

顏色\三原色 三原色Red 三原色Green 三原色Blue 結果
二進制:11111111
十進制:255
十六進制:FF
二進制:0
十進制:0
十六進制:0
二進制:0
十進制:0
十六進制:0
十進制:(255,0,0)
十六進制:#FF0000
二進制:0
十進制:0
十六進制:0
二進制:11111111
十進制:255
十六進制:FF
二進制:0
十進制:0
十六進制:0
十進制:(0,255,0)
十六進制:#00FF00
二進制:0
十進制:0
十六進制:0
二進制:0
十進制:0
十六進制:0
二進制:11111111
十進制:255
十六進制:FF
十進制:(0,0,255)
十六進制:#0000FF

??PS:在R中,你可以用顏色的名字找到顏色,colors()可以列出657種R內置的可以識別的顏色名字;也可以用RGB編碼的十進制數(shù)組合或十六進制數(shù)找到顏色,例如R內置的一個小調色板palette()里用的就是十六進制表示的顏色,如下:

> palette()
[1] "black"   "#DF536B" "#61D04F" "#2297E6"
[5] "#28E2E5" "#CD0BBC" "#F5C710" "gray62"

??從實用的角度,在R中,用顏色名字是對小白最友好的方式了,十進制組合表示起來略顯復雜,十六進制不管是用起來還是跟計算機交流起來都很好。了解下這幾種表示方式的轉換問題。

# 1. 給定十進制數(shù)字,轉換成十六進制表示
rgb(red, green, blue, alpha, names = NULL, maxColorValue = 1)
# 例如:
> rgb(red=255, green = 0, blue = 0,maxColorValue = 255)
[1] "#FF0000"

# 2. 給定顏色名字或十六進制數(shù)字,轉換成RGB顏色編碼
col2rgb(col, alpha = FALSE)
# 例如:
> col2rgb("red")
      [,1]
red    255
green    0
blue     0
> col2rgb("#FF0000")
      [,1]
red    255
green    0
blue     0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、 色彩的心理屬性 (一)、心理顏色 日常生活中觀察的顏色在很大程度上受心理因素的影響,即形成心理顏色視覺。在色...
    一睜眼看世界閱讀 2,511評論 0 2
  • 色彩是什么 色彩主觀來講就是光線給人的感覺,客觀的分析,就是今天要說的東西。 光 人眼的可見光范圍大概在400-7...
    hopewang1001閱讀 5,353評論 4 17
  • 常見顏色空間 color model & color space 我們每天說的RGB,這個稱呼嚴格來講應該歸屬于c...
    hopewang1001閱讀 10,010評論 2 20
  • 什么是顏色 Wiki是這樣說的:顏色或色彩是通過眼、腦和我們的生活經驗所產生的一種對光的視覺效應。嗯,簡單點說,顏...
    評評分分閱讀 33,391評論 6 57
  • R語言繪圖系列: R語言可視化及作圖1--基礎繪圖(par函數(shù),散點圖,盒形圖,條形圖,直方圖)[https://...
    Hayley筆記閱讀 15,831評論 0 19

友情鏈接更多精彩內容