2012-08-26 9 views
5

R(Win64)では、layout()コマンドを使ってレイアウトを定義する行列を使って、ラスタ画像とヒストグラムの組み合わせを1つのプロットウィンドウにプロットしようとしています。ここでは単純化されたデータを持ついくつかのサンプルコードです:R - マトリクスレイアウトを使って複数のラスタをプロットする

library(raster) 

r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5) 
rast1 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 
rast2 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 
rast3 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 

layout(matrix(c(1,2,3,4,1,2,3,5,1,2,3,6), 3, 4, byrow=T)) 
layout.show(6) 

plot(rast1, axes=F, ann=F, legend=F, box=F, useRaster=T) 
plot(rast2, axes=F, ann=F, legend=F, box=F, useRaster=T) 
plot(rast3, axes=F, ann=F, legend=F, box=F, useRaster=T) 
hist(rnorm(100), ann=F, axes=F) 
hist(rnorm(100), ann=F, axes=F) 
hist(rnorm(100), ann=F, axes=F) 

あなたが見ることができるように、私は彼らの横に3つのヒストグラムで、1列と3行ごとにまたがる3枚のラスタ画像を(rast1、rast2、rast3)をプロットしようとしていますそれぞれ1列と1行にわたっています。 layout.show()コマンドはそのアイディアを示します。

このコードを実行すると、最初のプロット(ラスタ)コマンドもプロットウィンドウのレイアウトをリセットし、後続のすべてのプロットを標準の3x4グリッドにプロットするようになります(5番目のプロットが最初に重なっています) 。適切なレイアウトで6つのヒストグラムをプロットすることができるので、レイアウト設定は健全に見えます。しかし、ラスタプロットは物事を混乱させる。

{raster}にplot()コマンドがありますが、layout()コマンドを使いこなしていると思われますが、理由や方法はわかりません。このレイアウトを実現する他の方法はありますか?別のラスターベースのコマンドですか?ラスタプロット間でレイアウトをリセットする方法はありますか?

ありがとうございます。

+0

'plot'関数は実際には、最初の引数のクラスに基づいてディスパッチされるさまざまな関数です。あなたはそれに渡すオブジェクトのクラスの特定の関数を見る必要があります。 (おそらく 'plot.raster') –

答えて

4

S4メソッドとlayout()の間に問題がある可能性があります。回避策として、plot()をimage()に置き換えるように動作しているようです。プロット(rast1、axes = F、ann = F、legend = F、box = F、useRaster = T)の代わりに、画像(rast1、axes = F、ann = F、asp = 1)

+0

素晴らしい!魅力のように動作します。ありがとうdcarlson! –

+0

ラスター用のプロットの代わりにイメージを使用すると、どのように伝説を取り戻すのですか? – jjunju

関連する問題