- R語言數據可視化之美:專業(yè)圖表繪制指南
- 張杰
- 1607字
- 2019-09-20 14:52:44
1.6.3 度量調整
度量用于控制變量映射到視覺對象的具體細節(jié),比如:X軸和Y軸、alpha(透明度)、colour(輪廓色、)fill(填充顏色)、linetype(線形狀)、shape(形狀)等,它們都有相應的度量函數,如表1-6-3所示。根據視覺通道映射的變量屬性,將度量調整函數分成數值型和類別型兩大類。R ggplot2的默認度量為scale_×××_identity()。需要注意的是:scale_*_manual()表示手動自定義離散的度量,包括colour、fill、alpha、linetype、shape和size等視覺通道映射參數。
表1-6-3 ggplot2常見度量調整函數

在表1-6-3中,X軸和Y軸度量是控制坐標軸的間隔與標簽的顯示等信息,會在1.6.4節(jié)時再進行詳細介紹。顏色作為數據可視化中尤為重要的部分,colour和fill會在1.7節(jié)時再進行詳細介紹。在實際的圖表繪制中,我們很少使用,因為這很難觀察到透明度的映射變化。每個度量調整函數的具體參數可以使用RStudio的“help”界面或者查看ggplot2的官方手冊。
圖1-6-9為散點圖不同度量的調整效果,圖1-6-9(a)是將數值離散型變量age映射到氣泡的大小(size),再使用scale_size(range=c(a, b))調整了散點大小(size)的度量,range表示視覺通道映射變量轉化后氣泡面積的映射顯示范圍。圖1-6-9(b)是在圖1-6-9(a)的基礎上添加了顏色的映射,使用scale_fill_distiller(palette="Reds")函數將數值離散型變量age映射到紅色漸變顏色條,其中,direction= 0表示顏色是從淺到深漸變的(注意:需要加載RColorBrewer包,才能使用“Reds”顏色主題)。圖1-6-9(c)是將類別離散型類別變量Class映射到不同的填充顏色(fill)和形狀(shape),使用scale_*_manual()手動自定義fill和shape的度量。圖1-6-9(d)是將數值離散型變量age和類別離散型變量Class分別映射到散點的大小(size)和填充顏色(fill),然后scale_size()和scale_fill_manual()分別調整氣泡大小(size)的映射范圍與填充顏色(fill)的顏色數值。

圖1-6-9 不同的度量調整效果
關鍵是,要學會合理地使用視覺通道映射參數,并調整合適的度量。可視化最基本的形式就是簡單地把數據映射成彩色圖形。它的工作原理就是大腦傾向于尋找模式,你可以在圖形和它所代表的數字間來回切換。1985年,AT&T貝爾實驗室的統(tǒng)計學家威廉·克利夫蘭(William Cleveland)和羅伯特·麥吉爾(Robert McGill)發(fā)表了關于圖形感知和方法的論文[18]。研究焦點是確定人們理解上述視覺暗示(不包括形狀)的精確程度,最終得出如圖1-6-10所示的數值型數據使用不同視覺暗示的精確程度排序。

圖1-6-10 克利夫蘭和麥吉爾的視覺暗示排序[18]
我們能用到的視覺暗示通常有長度、面積、體積、角度、弧度、位置、方向、形狀和顏色(色相和飽和度)。所以正確地選擇哪些視覺暗示就取決于你對形狀、顏色、大小的理解,以及數據本身和目標。不同的圖表類型應該使用不同的視覺暗示,合理的視覺暗示組合能更好地促進讀者理解圖表的數據信息。如圖1-6-11所示,相同的數據系列采用不同的視覺暗示的組合共有6種,分析結果如表1-6-4所示。
表1-6-4 圖1-6-11系列圖表的視覺暗示組合分析結果


圖1-6-11 不同視覺暗示的組合結果
根據表1-6-4可知,圖1-6-11 (f)是最優(yōu)的視覺暗示組合結果,既能保證很容易區(qū)分數據系列,也保證圖表很美觀,同時也適應于彩色與黑白兩種印刷方式。當圖1-6-11(f)采用黑白印刷時,色相視覺暗示會消除,只保留位置+方向+形狀,如圖1-6-11(c)所示,但是這樣也能容易區(qū)分數據系列,保證讀者正確、快速地理解數據信息。表1v6-5展示了圖1-6-11系列圖表的視覺暗示組合代碼與說明。
表1-6-5 圖1-6-11系列圖表的視覺暗示組合代碼與說明

在表1-6-5中,我們需要重點理解fill、color、size、shape等視覺通道映射參數的具體位置,何時應該在aes()內部,何時應該在aes()外部的區(qū)別。
●當我們指定的視覺通道映射參數需要進行個性化映射時(即一一映射),應該寫在aes()函數內部,即每一個觀測值都會按照我們指定的特定變量值進行個性化設定。典型情況是需要添加一個維度,將這個維度按照顏色、大小、線條等方式針對維度向量中每一個記錄值進行一一設定。
●當我們需要統(tǒng)一設定某些圖表元素對象(共性,統(tǒng)一化)時,此時應該將其參數指定在aes()函數外部,即所有觀測值都會按照統(tǒng)一屬性進行映射,例如size=5, linetype="dash",color="blue"。典型情況是需要統(tǒng)一所有點的大小、顏色、形狀、透明度,或者線條的顏色、粗細、形狀等。這種情況下不會消耗我們數據源中的任何一個維度或者度量指標,僅僅是對已經呈現(xiàn)出來的圖形元素的外觀屬性做了統(tǒng)一設定。
- Flask Web全棧開發(fā)實戰(zhàn)
- 軟件項目估算
- Oracle 11g從入門到精通(第2版) (軟件開發(fā)視頻大講堂)
- Dependency Injection in .NET Core 2.0
- Bulma必知必會
- Blender 3D Incredible Machines
- SEO實戰(zhàn)密碼
- 表哥的Access入門:以Excel視角快速學習數據庫開發(fā)(第2版)
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- C語言程序設計上機指導與習題解答(第2版)
- Building Slack Bots
- 3ds Max 2018從入門到精通
- Google Adsense優(yōu)化實戰(zhàn)
- Developer,Advocate!
- Java無難事:詳解Java編程核心思想與技術(第2版)