3

继续我之前的问题'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)

在此处输入图像描述

4

1 回答 1

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)
于 2016-03-26T07:51:25.520 回答