terra rast对象在绘图边距之外绘制

编程语言 2026-07-09

在向绘图中添加rast对象时,栅格会超出绘图区的边距。

示例:

library(terra) #terra 1.9.27
r<-rast(system.file("ex/elev.tif", package="terra"))#load a rast
inset<-c(xmin=6,xmax=6.5,ymin=49.5,ymax=50)#specify an area of interest within the rast bounding box

plot(NULL,xlim=inset[1:2],ylim=inset[3:4])#create an empty plot for area of interest
plot(r,add=T,legend=F)#add rast object

效果如下:

添加了 rast 对象且溢出绘图边界的绘图

虽然我意识到这可以通过image函数来解决,该函数在绘图区边距内绘制,但据我所知,image函数不能用于RGB图像的正确绘制。因此,推荐使用terra:plot函数来解决,而不是terra:image函数。

我尝试将rast对象与参数mar=NA一起添加,但没有效果。

解决方案

给定如下

library(terra)
r <- rast(system.file("ex/elev.tif", package="terra"))
inset <-c(xmin=6,xmax=6.5,ymin=49.5,ymax=50)

最简单的方法是

plot(r, legend=F, ext=inset)

在此添加图片描述

它还有一个额外的优点:生成的地图具有合理的 纵横比,你不会得到基础绘图在先绘制“inset”的坐标时所造成的失真(除非你使用 ext(inset),见下文)。

你也可以这样做

plot(crop(r, inset))

或者

plot(ext(inset), border=NA)
plot(r, legend=F, add=TRUE)

如果你的目标是在另一张地图上制作一个inset,或许可以从 terra::inset 开始。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章