3

前回の質問「速度データセットから vectorplot を作成する」の続きです。図を以下のようにする方法については、まだ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)

(2 番目の質問) を使用しているため、矢印の長さはデータによって決まりますdXY = TRUE。したがって、データを変更して、同じ大きさのベクトルを取得する必要があります。

uv0 <- uv / s
vectorplot(uv0, isField = 'dXY', region = s)
于 2016-03-26T07:51:25.520 に答える