开始使用免费开始使用

定性示例

最后,让我们看一个分类变量的示例。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


编辑并运行代码