如何在矢量图上插入区域?

时间:2016-03-25 07:05:42

标签: r raster r-raster levelplot

继续我之前的问题'create vectorplot from velocity dataset'。我还有2个问题,如何让数字看起来如下:

1)如何进行区域插值?我曾尝试使用interpolate = TRUE,但没有用 2)如何定义具有相同长度的箭头符号(这意味着箭头仅显示速度方向)

这里我的数据uv.nc和我写的语法:

library (raster)
flname <- 'uv.nc'
u <- raster(flname, varname = 'U')
v <- raster(flname, varname = 'V')
uv <- stack(u,v)
s <- sqrt(u^2 + v^2)

library(rasterVis)
jet <- colorRampPalette(c('#00007F', 'blue', '#007FFF', 'cyan','#7FFF7F', 'yellow', '#FF7F00', 'red', '#7F0000'))
range = seq(0, 0.5, 0.05)
vectorplot(uv, isField = 'dXY', interpolate = TRUE, col.regions = jet, region=s, length=0.05)

enter image description here

1 个答案:

答案 0 :(得分:2)

(第一个问题)interpolate参数需要panel.levelplot.raster调用levelplot函数(由vectorplot内部使用以呈现背景)。但是,这不能直接与当前版本的rasterVis一起使用。你可以尝试这个技巧:

levelplot(s, 
          panel = panel.levelplot.raster, 
          interpolate = TRUE,
          margin = FALSE) + 
vectorplot(uv, isField = 'dXY', region = FALSE)

(第二个问题)箭头的长度由您的数据决定,因为您使用的是dXY = TRUE。因此,您应该使用修改数据来获得具有相同幅度的向量。

uv0 <- uv / s
vectorplot(uv0, isField = 'dXY', region = s)