開始使用免費開始

定性範例

最後,來看一個類別變數的例子。land_cover 這個 raster 是對地表進行網格化分類的結果。先把 land_cover 印出來看看:

land_cover

你會注意到 values 是數值,但有 attributes 把這些數值對應到各個類別(就像 factor 的運作方式)。

為類別變數選色時,很大程度取決於圖像的目的。如果你希望各類別在視覺上有大致相同的權重——也就是不希望某一類別特別突出——一種作法是使用色相不同、但彩度(鮮豔度)與明度相同的顏色(這也是 ggplot2 中離散色階的預設,可用 hcl() 產生)。

RColorBrewer 的定性調色盤在「視覺權重相近」與「容易辨識顏色」之間取得平衡。其中 "paired" 與 "accent" 方案有所不同:前者提供明度不同的成對顏色,後者則包含一些更強烈的顏色,可用來凸顯特定類別。

對這筆資料來說,選擇直覺的顏色可能更合理,例如森林用綠色、水域用藍色。無論你選哪一種,只要在相對應的 tm_*** 圖層透過 palette 參數傳入一個顏色向量,就能設定新的顏色。

本練習屬於課程

在 R 視覺化地理空間資料

檢視課程

練習說明

  • 以 tm_shape() 搭配 tm_raster() 繪製 land_cover raster。預設情況下,tmap 使用 RColorBrewer 的 "Set3" 定性調色盤。
  • 檢視 hcl_cols 的程式碼(它模仿 ggplot2 使用的調色盤)。接著再次繪製 land_cover raster,並在 tm_raster() 的 palette 參數傳入 hcl_cols。
  • 對 land_cover 呼叫 levels() 以查看各個類別。
  • 這次使用 intuitive_cols 作為調色盤,並加入 tm_legend() 圖層,參數為 position = c("left", "bottom")。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

library(raster)

# Plot land_cover



# Palette like the ggplot2 default
hcl_cols <- hcl(h = seq(15, 375, length = 9), 
                c = 100, l = 65)[-9]

# Use hcl_cols as the palette



# Examine levels of land_cover


# A set of intuitive colors
intuitive_cols <- c(
  "darkgreen",
  "darkolivegreen4",
  "goldenrod2",
  "seagreen",
  "wheat",
  "slategrey",
  "white",
  "lightskyblue1"
)

# Use intuitive_cols as palette


編輯並執行程式碼