定性範例
最後,來看一個類別變數的例子。land_cover 這個 raster 是對地表進行網格化分類的結果。先把 land_cover 印出來看看:
land_cover
你會注意到 values 是數值,但有 attributes 把這些數值對應到各個類別(就像 factor 的運作方式)。
為類別變數選色時,很大程度取決於圖像的目的。如果你希望各類別在視覺上有大致相同的權重——也就是不希望某一類別特別突出——一種作法是使用色相不同、但彩度(鮮豔度)與明度相同的顏色(這也是 ggplot2 中離散色階的預設,可用 hcl() 產生)。
RColorBrewer 的定性調色盤在「視覺權重相近」與「容易辨識顏色」之間取得平衡。其中 "paired" 與 "accent" 方案有所不同:前者提供明度不同的成對顏色,後者則包含一些更強烈的顏色,可用來凸顯特定類別。
對這筆資料來說,選擇直覺的顏色可能更合理,例如森林用綠色、水域用藍色。無論你選哪一種,只要在相對應的 tm_*** 圖層透過 palette 參數傳入一個顏色向量,就能設定新的顏色。
本練習屬於課程
在 R 視覺化地理空間資料
練習說明
- 以
tm_shape()搭配tm_raster()繪製land_coverraster。預設情況下,tmap使用RColorBrewer的"Set3"定性調色盤。 - 檢視
hcl_cols的程式碼(它模仿ggplot2使用的調色盤)。接著再次繪製land_coverraster,並在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