2012-08-26 42 views
5

在R(Win64)中,我嘗試使用layout()命令和定義佈局的矩陣在單個繪圖窗口中繪製光柵圖像和直方圖的組合。下面是一些示例代碼簡化的數據: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幅光柵圖像(rast1,rast2,rast3)跨越1列,每3行,旁邊有3個直方圖,其中每個跨越1列和1行。 layout.show()命令提供了這個想法。

當我運行這段代碼,它似乎是第一個圖(光柵)命令還重置圖形窗口的佈局,使所有後續地塊的標準3x4格繪製(與5號地塊現在重疊第一) 。佈局設置看起來很合理,因爲我可以在適當的佈局中繪製六個直方圖。但柵格地塊搞砸了。

我懷疑有一些關於{raster}中的plot()命令與layout()命令混淆,但我不知道爲什麼或如何。有沒有其他的方法來實現這種佈局?另一個基於光柵的命令?有沒有辦法重置柵格圖之間的佈局?

在此先感謝。

+0

'plot'函數實際上是一系列函數,它們將根據第一個參數的類來調度。您需要查看傳遞給它的對象的類的特定函數。 (可能是'plot.raster') –

回答

4

這裏可能存在S4方法和layout()之間的問題。作爲一種解決方法,它似乎用圖像()代替plot()。使用image(rast1,axes = F,ann = F,asp = 1)代替plot(rast1,axes = F,ann = F,legend = F,box = F,useRaster = T)來獲得方形圖像映射。

+0

太棒了!奇蹟般有效。謝謝dcarlson! –

+0

當您使用圖像而不是柵格作爲柵格時,如何恢復圖例 – jjunju