第 3 章 Aesthetic scales

每個geom有它可以使用的aes,geom裡的aes只是指定不同美學的決定資料變數,然而資料變數「值」如何映到「美學呈現」透過scale來更動。

ggplot2的所有aesthetic specifications: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html

3.1 color/colour

3.1.2 顏色模型

光的三原色為R(紅)G(綠)B(藍),三種光原色一起發光就會產生俗稱的白光。事實上光是沒有顏色的。而人類眼睛所看物體的顏色,是光線照在物體上所反射的波長被眼睛擷取到而決定人類所看到的顏色。白色就是所有的光都被反射所呈現的顏色,反之,黑色則是吸收了所有的光。

顏色常見有三種三維度的表現形式:

RGB

  • RGB(Red, Green, Blue):\((R,G,B)\in [0,1]^3\)

    三原色以其最高顏色強度(255)的比例呈現。

[1] “#0000FF”

[1] “#8000B3”

HSV

  • HSV(Hue, Saturation, Value):\((H,S,L)\in [0,1]^3\)

    Hue(色像): 以360度色環所要「角度/360」選擇基本色。
    Saturation(飽合度): 可以想成白色與所選擇基本色的混合比例,0=全白色,1=全基本色。 Value(lightness value照度): 可以想成要在多亮的環境下看,0=全暗,1=全亮。

360度色像Hue

圖 3.1: 360度色像Hue

HSV意示圖

圖 3.2: HSV意示圖

HCL

HCL是以人眼感受出發的色彩選擇,因此成品較能傳達作者所要的視覺感受。

  • HCL(Hue, Chroma, Luminance): \((H,C,L)\in [0,360]\times[0,\bar{c}]\times[0,100]\) HSL是以感官出發點的顏色描繪系統。
    Hue(色像): 以360度色環選擇基本色。
    Chroma(彩度): 彩度越低顏色感受越有陰影感。
    Luminance(流明度): 流明度越高代表在越亮的環境觀看。

由於HCL是以人眼感受出發,每一種色像會有眼睛感觀的上下限,它受到彩度及流明度的設定影響,故HCL在不同色像下它的眼睛可感受C-L空間大小及位置會不同,我們可以使用colorspace::choose_color()來協助參數選擇:

3.1.3 調色盤palette

  • 使用choose_palette(gui="shiny")選完palette可以copy下來對應的palette hcl函數並修改函數的register參數成為所要名稱。

調色盤(palette)是將N個顏色進行排序,排序原則依視覺化目的分成:

  • Qualitative:只要突顯不同類別就好。
Qualitative:維持亮度、彩度,只改變色像

圖 3.3: Qualitative:維持亮度、彩度,只改變色像

在hcl座標上,固定c=35,l=85,只改變色像由0角開始到360度結束。

  • Sequential: 要突顯不同類同時有排序感。
Sequential:維持色像,逐步調高亮度、降低彩度

圖 3.4: Sequential:維持色像,逐步調高亮度、降低彩度

hcl由(135,45,35)高彩度走到(135,0,95)低彩度,走法的由power參數控制。

  • Diverging: 要突顯不同類且強調極端族群的資料。
Diverging:兩段Sequential走法。

圖 3.5: Diverging:兩段Sequential走法。

hcl由(260,80,30)高彩度走到(260,0,95)無彩度灰色(即sequential走法),再走到(0,80,30)。由於無彩度時hue不重要,下半段走法可以想成(0,0,95)走到(0,80,30)(而一次的sequential走法) ,走法的由power參數控制。

3.1.4 ggplot應用

顏色變化率

有時用來對應顏色的資料太集中在某一類或某些數值範圍,這時圖面上反而區分不了資料差異,此時有必要改變調色盤的顏色變化率。

3.1.5 其他

色盲

  • deutan: green cones in the eye detect too much red light and not enough green light. As a result red, yellow, green, and brown can appear similar, especially in low light.

  • protan: the red cones do not detect enough red and are too sensitive to greens, yellows, and oranges. As a result, greens, yellows, oranges, reds, and browns may appear similar, especially in low light.

  • tritan: a loss of color discrimination for shades of blue and yellow but it is not typically a form of color blindness.

3.1.6 練習

下載台灣五等距家庭所得家庭可支配所得:

計設一圖突顯不同家庭所得在2003年金融海嘯後的所得上升速度差異。

3.2 Linetype

Two ways to specify it.

使用hex碼

用數字來定義一個完整線段的形式。 “33”:3個點距的「線」,接3個點路的「空白」

連線數字分別代表:「線」「空白」「線」「空白」依此類推

3.3 Date/Time

若x/y軸為日期/時間,要更改x/y軸美感呈現,以x軸為例,可使用scale_x_*,其中*依日期/時間型態(以其class決定)分成:

  • scale_x_date: class Date
  • scale_x_datetime: class POSIXct
  • scale_x_time: class hms

每一種詳細用法可參見Position scales for date/time data

由於三種的使用原則大致相同,我們以常見的日期(Date)型態做說明。

範例:消費者物價指數

資料來源: 行政院主計總處

單位:民國105年=100

資料處理

基本圖形