定性示例
最后,让我们看一个分类变量的示例。land_cover 栅格包含对地表的网格化分类。先打印 land_cover 看看:
land_cover
您会注意到 values 是数值型,但有 attributes 将这些数字映射到类别(这与因子的工作方式类似)。
为分类变量选择颜色很大程度上取决于图形的用途。当您希望各类别在视觉上权重大致相等——也就是说,您不希望某一类比其他类别更显眼——一种方法是使用不同色相、但色度(鲜艳度的度量)和明度相同的颜色(这是 ggplot2 中离散色标的默认设置,也可以用 hcl() 函数生成)。
RColorBrewer 的定性调色板在保证颜色视觉权重相近的同时,兼顾了容易区分。"paired" 和 "accent" 方案则有所不同,分别通过提供不同明度的成对颜色,以及包含更高强度颜色的调色板,来突出某些类别。
对于这组数据,更直观的做法可能是选用常识性的颜色,例如森林用绿、水体用蓝。无论采用哪种方法,设置新颜色都只需在相应的 tm_*** 图层中通过 palette 参数传入一个颜色向量即可。
本练习是课程的一部分
在 R 中可视化地理空间数据
练习说明
- 通过组合
tm_shape()和tm_raster()绘制land_cover栅格。默认情况下,tmap使用RColorBrewer的"Set3"定性调色板。 - 查看
hcl_cols的代码,它模仿了ggplot2使用的调色板。然后再次绘制land_cover栅格,并将hcl_cols传给tm_raster()的palette参数。 - 对
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