2017-10-13 137 views
1

我試圖繪製使用的兩個數字組成的情節rasterLayer對象screenR:繪製屏幕內的光柵圖像()不工作

首先 - 工作情況時我們只有一個形象:

library(raster) 
f <- system.file("external/test.grd", package="raster") 
rst <- raster(f) 

plot(rst) 
points(180000, 332000, col="red", pch=19) 

一切都看起來不錯,圖像看起來是這樣的:

image1

豪版本時,我把屏幕分割成兩個,並嘗試只使用繪圖區域得到以下的一半來繪製該圖:

library(raster) 
f <- system.file("external/test.grd", package="raster") 
rst <- raster(f) 
class(rst) 

figs <- rbind(c(0, 0.5, 0, 1), # Screen1 
       c(0.5, 1, 0, 1) # Screen2 
      ) 
screenIDs <- split.screen(figs) 

screen(screenIDs[1]) 
plot(rst) 
points(180000, 332000, col="red", pch=19) 

image2

好像柵格形狀的主圖像是正確繪製。然而,由於某種原因,它然後捕獲整個繪圖區域並在其上添加邊界線。之後,對劇情的後續調用(如points)在整個數字上加分,而不是停留在前半部分。

任何想法如何解決或繞過這是最受讚賞。

+0

不能確定'split.screen'功能,但不會使用'看齊(mfrow = C(1,2))'提供替代選擇? – timfaber

+0

@timfaber par(mfrow = c(1,2))確實有效。但不幸的是,我有一個複雜的頁面佈局(這裏的兩個半隻是爲了可重現的例子),並且必須使用'screen'。 –

回答

2

您可以使用layout而不是split.screen。在這裏展示,就像在你的例子中一樣,只有一排兩個相同大小的面板的簡單佈局。對於如何讓更多複雜的佈局,看看?layout

layout(matrix(c(1,2), 1, 2, byrow = TRUE)) 
plot(rst) 
points(180000, 332000, col="red", pch=19) 

plot(1:10,1:10) # a dummy plot to put in the right hand panel 

enter image description here

+0

+1。感謝您花時間回覆。我知道佈局,但我真的想爲此使用屏幕。現在調查使用'image()'繪製柵格的另一種方法,該方法似乎在屏幕上更好地工作,但無法獲得正確的分辨率...... –