使用R语言levelplot+RColorBrewer的RdBu配色时出现$操作符错误
问题排查与解决
1. 修正配色参数名称
你代码里用了col=brewer.pal(...),但rasterVis::levelplot中,栅格的填充色映射参数是**col.regions**,而非col。col是用来设置点、线等元素颜色的,误用会触发内部逻辑错误。
修改后代码片段:
col.regions=brewer.pal(n=10, name="RdBu")
2. 检查mapTheme的合法性
错误提示里的$操作符问题,大概率出在par.settings=mapTheme上。如果mapTheme是你自定义的主题,要确保它是trellis.par.settings类型的对象(比如用rasterVis::rasterTheme()或lattice::custom.theme()创建)。要是mapTheme被错误定义成了原子向量(比如不小心赋值成了普通数值向量),内部代码调用$访问主题元素时就会报错。
可以先临时注释掉par.settings=mapTheme测试:
Plot8 <- levelplot(FDifference3, margin=F, at=c(seq(-50,150,10)), pretty=TRUE, main="RCP 8.5", col.regions=brewer.pal(n=10, name="RdBu"))
如果不报错了,就重新正确创建mapTheme对象。
3. 确认FDifference3的对象类型
检查FDifference3是否为合法的Raster对象:
class(FDifference3)
如果输出是numeric/integer这类原子向量,说明你没把NC数据正确转为Raster对象,需要用raster()函数转换:
FDifference3 <- raster("你的NC文件路径", varname="目标变量名")
内容的提问来源于stack exchange,提问作者Android17
相关产品推荐
相关产品推荐

