为SpatRaster设置颜色表后绘图时图例消失的问题
我想要可视化一个带有特定颜色表的土地覆盖数据集。使用plot()函数时,每个类别会按照该颜色表指定的颜色绘制,但图例似乎缺失了。我运行了颜色表帮助页中的代码,也遇到了相同问题:
r <- rast(ncols=3, nrows=2, vals=1:6) coltb <- data.frame(value=1:6, col=rainbow(6, end=.9)) plot(r)
这段代码生成的常规绘图包含图例,但执行以下代码后:
coltab(r) <- coltb plot(r)
得到的绘图没有图例。我是否遗漏了什么?是否需要为plot()函数提供额外参数?最简单的解决方法是什么?用coltab()为SpatRaster设置颜色表是个不错的功能,但如果不显示图例就没多大用处了。
解决方案
方法1:显式开启图例
在plot()函数中添加legend=TRUE参数,这是最直接的解决方式:
r <- rast(ncols=3, nrows=2, vals=1:6) coltb <- data.frame(value=1:6, col=rainbow(6, end=.9)) coltab(r) <- coltb plot(r, legend=TRUE)
方法2:转为因子类型(适配分类数据)
土地覆盖属于分类变量,将栅格转为因子后,plot()会自动生成带类别标签的图例,同时保留自定义颜色表:
r <- rast(ncols=3, nrows=2, vals=1:6) coltb <- data.frame(value=1:6, col=rainbow(6, end=.9)) # 转换为因子并设置类别名称(可替换为实际土地覆盖类型) r <- as.factor(r) levels(r) <- data.frame(id=1:6, cover=c("类型1","类型2","类型3","类型4","类型5","类型6")) # 应用颜色表 coltab(r) <- coltb plot(r)
方法3:手动添加自定义图例
如果需要更灵活的图例样式,可先绘制栅格,再用legend()函数手动添加:
r <- rast(ncols=3, nrows=2, vals=1:6) coltb <- data.frame(value=1:6, col=rainbow(6, end=.9)) coltab(r) <- coltb plot(r) # 在右上角添加图例,可调整位置和样式 legend("topright", legend=coltb$value, fill=coltb$col, title="类别")
内容的提问来源于stack exchange,提问作者eric999
相关产品推荐
相关产品推荐

