2

私はRでマッピングを行っており、パッケージで非常に便利なlevelplot関数を見つけました. rasterVisウィンドウに複数のプロットを表示したいと思います。ただし、 にpar(mfcol)は収まりませんlattice。私の場合、関数は非常に便利であることがわかりましlayoutたが、やりたいことを実行できません。

これが私のコードです:

s <- stack(Precip_DJF1, Precip_DJF2, Precip_DJF3, Precip_DJF4, 
           Precip_DJF5, Precip_DJF6)

levelplot(s, layout(matrix(c(1, 2, 0, 3, 4, 5), 2, 3)), 
          at=seq(floor(3.81393), ceiling(23.06363), length.out=20), 
          par.settings=themes, par.strip.text=list(cex=0), 
          scales=list(alternating=FALSE))

使用する

 layout(matrix(c(1, 2, 0, 3, 4, 5), 2, 3))

動作中に失敗しlayout(3, 2)ますが、プロットは列方向ではなく行方向に表示されます。プロットを列 1、次に列 2 などに表示したい。

mat <- matrix(c(1, 2, 3, 4, 5, 6), 2, 3)

> mat
#      [,1] [,2] [,3]
# [1,]    1    3    5
# [2,]    2    4    6

levelplotこの種のレイアウト内またはその機能はありlatticeますか?

前もって感謝します。

4

1 に答える 1

7

@Pascal で提案されているように、index.condこれを行うために使用できます。

例えば:

library(rasterVis)
s <- stack(replicate(6, raster(matrix(runif(100), 10))))
levelplot(s, layout=c(3, 2), index.cond=list(c(1, 3, 5, 2, 4, 6)))

ここに画像の説明を入力

に渡されるリストをハードコーディングしたくない場合はindex.cond、次のようなものを使用できます。

index.cond=list(c(matrix(1:nlayers(s), ncol=2, byrow=TRUE)))

2、レイアウトに含まれる行数を示します。


もちろんstack、必要な行単位のプロット順序で配置されたレイヤーを渡すこともできます。たとえば、次のようになります。

levelplot(s[[c(matrix(1:nlayers(s), ncol=2, byrow=TRUE))]], layout=c(3, 2))
于 2015-02-20T03:35:48.427 に答える