rasterVis包vectorplot函数reverse参数方向反转失效如何解决
vectorplot reverse参数无效解决方案
根因说明
rasterVis::vectorplot 存在历史逻辑缺陷:仅当输入为多图层矢量栈、或开启流线(streamlet)模式时,reverse 参数才会被传入梯度计算模块。默认单图层梯度箭头绘制场景下,该参数被遗漏,所以修改reverse取值不会改变输出结果。
可用修复方案
方案1:手动反转梯度(全版本兼容)
自行计算栅格梯度后取反,直接生成反向矢量场绘制即可,无需依赖有缺陷的reverse参数:
library(raster); library(rasterVis) # 沿用示例数据生成逻辑 proj <- CRS('+proj=longlat +datum=WGS84') df <- expand.grid(x=seq(-2, 2, .01), y=seq(-2, 2, .01)) df$z <- with(df, (3*x^2 + y)*exp(-x^2-y^2)) r1 <- rasterFromXYZ(df, crs=proj) # 手动计算梯度并反转方向 grad <- terrain(r1, opt = c("dx", "dy")) grad_reversed <- -grad # 绘制反向矢量场(箭头从低值指向高值) vectorplot(grad_reversed, isField = TRUE)
方案2:开启流线模式触发reverse参数生效
如果需要使用流线样式展示矢量场,开启streamlet = TRUE后reverse参数即可正常工作:
# 流线模式下reverse参数正常生效 vectorplot(r1, streamlet = TRUE, reverse = TRUE)
内容的提问来源于stack exchange,提问作者Bruno Garcia Luize
相关产品推荐
相关产品推荐

