7

R(Win64)では、レイアウトを定義するマトリックスを指定したlayout()コマンドを使用して、ラスターイメージとヒストグラムの組み合わせを単一のプロットウィンドウにプロットしようとしています。簡略化されたデータを含むサンプルコードを次に示します。

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)

ご覧のとおり、1列と3行にまたがる3つのラスターイメージ(rast1、rast2、rast3)をプロットしようとしています。その横には、それぞれ1列と1行にまたがる3つのヒストグラムがあります。layout.show()コマンドがアイデアを提供します。

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

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

前もって感謝します。

4

1 に答える 1

5

ここでは、S4メソッドとlayout()の間に問題がある可能性があります。回避策として、plot()をimage()に置き換えることはうまくいくようです。plot(rast1、axes = F、ann = F、legend = F、box = F、useRaster = T)の代わりに、image(rast1、axes = F、ann = F、asp = 1)を使用して正方形の画像マップを取得します。

于 2012-08-27T02:56:20.367 に答える