绘制栅格时将 par() 设置更改为默认值
Changing par() settings to default when plotting rasters
当运行以下代码时,R返回如下图所示。
我应该如何更改我的 par()
设置(如下所示)以使其 returns 成为单个图像?我认为这是因为我手动更改了 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
raster
对象的 plot
方法根据 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 所述,您可以使用 plot
方法的 nc
参数修改布局,例如plot(r1, nc=1)
将为您提供一列三个图。
相比之下,raster::plotRGB
将此类 RGB raster
对象绘制为单个 RGB 图像。
当运行以下代码时,R返回如下图所示。
我应该如何更改我的 par()
设置(如下所示)以使其 returns 成为单个图像?我认为这是因为我手动更改了 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
raster
对象的 plot
方法根据 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 所述,您可以使用 plot
方法的 nc
参数修改布局,例如plot(r1, nc=1)
将为您提供一列三个图。
相比之下,raster::plotRGB
将此类 RGB raster
对象绘制为单个 RGB 图像。