You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R的levelplot绘制分类栅格时图例仅显示数字ID而非分类类别

解决levelplot绘制分类栅格时图例显示数字ID的问题

问题核心是rasterVis::levelplot默认读取栅格属性表(RAT)里的ID列作为图例标签,你自定义的legend列不会被自动识别。以下是两种可行的解决方法:

方法一:修改属性表列名为默认识别的names

将分类标签列名改为names,levelplot会自动读取这一列作为图例文本:

library(raster)
library(rasterVis)

r <- raster(ncol=10, nrow=10)
values(r) <- rep(1:4, each=25)

r <- ratify(r) 
rat <- levels(r)[[1]]
rat$names <- c("Class A", "Class B", "Class C", "Class D")  # 修改列名为names

levels(r) <- rat

rasterVis::levelplot(r)

方法二:手动指定图例标签

如果不想修改属性表结构,可以在levelplot中通过colorkey参数手动设置图例的刻度和对应标签:

library(raster)
library(rasterVis)

r <- raster(ncol=10, nrow=10)
values(r) <- rep(1:4, each=25)

r <- ratify(r) 
rat <- levels(r)[[1]]
rat$legend <- c("Class A", "Class B", "Class C", "Class D")

levels(r) <- rat

# 自定义colorkey的标签映射
rasterVis::levelplot(r, 
                     colorkey=list(
                       labels=list(
                         at=1:4,  # 对应栅格的数字ID
                         labels=rat$legend  # 替换为自定义分类名称
                       )
                     ))

原因说明

ratify()生成的默认属性表仅包含ID列,levelplot默认以此列作为图例显示内容。只有当属性表中存在names列时,才会自动用该列文本替代数字ID;否则需要手动指定标签映射关系。

内容的提问来源于stack exchange,提问作者majordanby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:05:38