第 6 章 Guide, Facet and Theme

6.1 Guides (axes+legend)

x/y的說明透過:

  • axes: +scale_<x or y>_...()

其他aes mapping說明透過:

  • legend: +guide(<aes name>=...)

6.1.1 Guides: axes

  • +scale_<x or y>_...()

6.1.1.1 second axis: sec_axis()

  • 兩個「不同範圍」的y值,有「相同的x」,其中:
    (yL,x) 要使用左邊內訂y座標軸;(yR,x)要使用右邊第二座標軸(second axis).

    • 步驟1:定義函數轉換(\(f\)\(f^{-1}\))
      先將\(yR\)經過一個函數f轉換成在Y-left axis limits範圍的\(yL^*\),即: \[yL^*=f(yR)\] 形成新的\((yL^*,x)\)資料。 \[ yR\stackrel{f}{\rightarrow}yL^{*}\\ yR\stackrel{f^{-1}}{\leftarrow}yL^{*} \]

    • 步驟2:yR資料轉換
      \((yL,x)\)轉換後的\((yL^*,x)\)畫在一起。

    • 步驟3:設定右Y軸
      加上右Y軸並告訴ggplot,「左Y」如何對應到「右Y」——使用scale_y_...() layer, 更改設定sec.axis=sec_axis(...), 其中:

sec_axis(trans = f_inverse, name = waiver(), breaks = waiver(),
  labels = waiver())
  • f_inverse: \(f^{-1}\) 函數名稱

6.2 Facet

6.2.2 Option: scales

  • scales: Are scales shared across all facets (the default, “fixed”), or do they vary across rows (“free_x”), columns (“free_y”), or both rows and columns (“free”)?

6.2.4 Option: space

  • If “free_y” their height will be proportional to the length of the y scale; if “free_x” their width will be proportional to the length of the x scale; or if “free” both height and width will vary.

6.3 Theme

任何ggplot都會有一個預設的theme(全部ggplot2 themes), 內定為theme_grey(),接著可以透過theme()去改設定:

  • which component?

  • how to set its value?

    • atomic vector.

    • list: involved with a lot of settings. usually via some other functions, such as:

      • element_text/line/rect() or element_blank()

      • unit()

      • margin()

6.3.1 Component: plot

  • (*)會造成plot.margin 之margin(t,l)的增加,因文字的hjust=1,vjust=0(即文字塊的右下角為座標點)。若再配會plot.tag.position=c(0,1),則tag文字會消失。

6.3.2 Component: legend

6.4 Size

6.4.1 grid::unit()

透過此函數計算較容易:

unit(<數字>,<單位>)

單位:

6.4.5 Guidelines

  • 字體以pt為主,並相對於base_size。

  • 非文字配置,視所要感受:

    • 相對於所要對應之字體

    • 相對於viewport