2015-04-30 132 views
2

运行以下代码时,R将返回下面的图像显示。绘制栅格时将par()设置更改为默认设置

我应该如何更改我的par()设置(下面提供),以便它返回单个图像?我认为这是因为我手动更改了par()设置。有没有办法将par()设置为默认设置,,因为我不知道我的默认设置是

library(raster) 
r1 <- brick(system.file("external/rlogo.grd", package="raster")) 
plotRGB(r1) 
plot(r1, xlim=c(0, 50), ylim=c(0, 50)) 


> par() 
$xlog 
[1] FALSE 

$ylog 
[1] FALSE 

$adj 
[1] 0.5 

$ann 
[1] TRUE 

$ask 
[1] FALSE 

$bg 
[1] "white" 

$bty 
[1] "o" 

$cex 
[1] 1 

$cex.axis 
[1] 1 

$cex.lab 
[1] 1 

$cex.main 
[1] 1.2 

$cex.sub 
[1] 1 

$cin 
[1] 0.2000000 0.2666667 

$col 
[1] "black" 

$col.axis 
[1] "black" 

$col.lab 
[1] "black" 

$col.main 
[1] "black" 

$col.sub 
[1] "black" 

$cra 
[1] 14.4 19.2 

$crt 
[1] 0 

$csi 
[1] 0.2666667 

$cxy 
[1] 3.659406 4.879208 

$din 
[1] 9.000000 4.208333 

$err 
[1] 0 

$family 
[1] "" 

$fg 
[1] "black" 

$fig 
[1] 0 1 0 1 

$fin 
[1] 9.000000 4.208333 

$font 
[1] 1 

$font.axis 
[1] 1 

$font.lab 
[1] 1 

$font.main 
[1] 2 

$font.sub 
[1] 1 

$lab 
[1] 5 5 7 

$las 
[1] 0 

$lend 
[1] "round" 

$lheight 
[1] 1 

$ljoin 
[1] "round" 

$lmitre 
[1] 10 

$lty 
[1] "solid" 

$lwd 
[1] 1 

$mai 
[1] 1.360000 1.093333 1.093333 0.560000 

$mar 
[1] 5.1 4.1 4.1 2.1 

$mex 
[1] 1 

$mfcol 
[1] 1 1 

$mfg 
[1] 1 1 1 1 

$mfrow 
[1] 1 1 

$mgp 
[1] 3 1 0 

$mkh 
[1] 0.001 

$new 
[1] FALSE 

$oma 
[1] 0 0 0 0 

$omd 
[1] 0 1 0 1 

$omi 
[1] 0 0 0 0 

$page 
[1] TRUE 

$pch 
[1] 1 

$pin 
[1] 9.000000 4.208333 

$plt 
[1] 0 1 0 1 

$ps 
[1] 16 

$pty 
[1] "m" 

$smo 
[1] 1 

$srt 
[1] 0 

$tck 
[1] NA 

$tcl 
[1] -0.5 

$usr 
[1] -31.83663 132.83663 0.00000 77.00000 

$xaxp 
[1] 0 100 2 

$xaxs 
[1] "r" 

$xaxt 
[1] "s" 

$xpd 
[1] FALSE 

$yaxp 
[1] 0 70 7 

$yaxs 
[1] "r" 

$yaxt 
[1] "s" 

$ylbias 
[1] 0.2 

enter image description here

+0

相关性:http://stackoverflow.com/questions/9292563/how-do-i-reset-the-graphical-parameters-back-to-default-values-without-use-of-de – thelatemail

+0

@thelatemail为什么? OP的mfrow和mfcol设置已经是默认设置 – rawr

+1

@rawr - 我只是简单地提供了一些关于他们声明的更多信息:“有没有将par()设置为默认设置的方法,因为我不知道我的默认设置是什么? – thelatemail

回答

4

plot方法raster对象取决于层raster具有的数量重新定义mfrow

你的光栅图像具有三个层(一个用于每个频带:红,绿和蓝),如下所示:

r1 

## class  : RasterStack 
## dimensions : 77, 101, 7777, 3 (nrow, ncol, ncell, nlayers) 
## resolution : 1, 1 (x, y) 
## extent  : 0, 101, 0, 77 (xmin, xmax, ymin, ymax) 
## coord. ref. : +proj=merc 
## names  : red, green, blue 
## min values : 0,  0, 0 
## max values : 255, 255, 255 

其结果是,绘制时,mfrow设置为c(2, 2),以容纳三层。

看看getMethod('plot', 'Raster')看看幕后发生了什么。这里是它的一部分:

... 
if (nl > 1) { 
     if (missing(nc)) { 
     nc <- ceiling(sqrt(nl)) 
     } 
     else { 
     nc <- max(1, min(nl, round(nc))) 
     } 
     if (missing(nr)) { 
     nr <- ceiling(nl/nc) 
     } 
     else { 
     nr <- max(1, min(nl, round(nr))) 
     nc <- ceiling(nl/nr) 
     } 
     old.par <- par(no.readonly = TRUE) 
     on.exit(par(old.par)) 
     par(mfrow = c(nr, nc), mar = c(4, 4, 2, 2)) 
... 

如果你想绘制只是一个单一的条带(层),或两个人,你可以使用以下,在这种情况下mfrow将被设置为分别c(1, 1)c(1, 2),:

plot(r1[[3]]) # third band; equivalently, plot(r1, 3) 
plot(r1[[1:2]]) # bands 1 and 2; equivalently, plot(r1, 1:2) 

正如@RobertH指出,你可以用nc参数的plot方法,例如修改布局plot(r1, nc=1)会给你一个三列图。


相反,raster::plotRGB地块例如RGB raster对象作为单个RGB图像。

+1

你可以使用'plot(x,2)'来查看一个特定的图层(在这种情况下是第二个图层)或'plot(b,nc = 1)'来改变参数列和行例)。 – RobertH