使用terra::plot添加rast对象时超出绘图边距的问题求助
解决terra::plot添加栅格时溢出绘图边距的问题
使用terra::plot()在已有绘图上添加栅格对象时,栅格会溢出到绘图边距之外。示例代码如下:
library(terra) #terra 1.9.27 r<-rast(system.file("ex/elev.tif", package="terra"))#加载rast对象 inset<-c(xmin=6,xmax=6.5,ymin=49.5,ymax=50)#指定rast边界框内的感兴趣区域 plot(NULL,xlim=inset[1:2],ylim=inset[3:4])#创建感兴趣区域的空绘图 plot(r,add=T,legend=F)#添加rast对象
已知image()函数可解决边距溢出问题,但该函数无法正常绘制RGB图像,因此优先寻求terra::plot()的解决方案,尝试过mar=NA参数但无效。
可行解决方案
以下两种方法均基于terra包自身功能,且支持RGB图像绘制:
- 方法一:先裁剪栅格到感兴趣区域
使用crop()函数将原始栅格裁剪到指定边界范围,再添加到绘图中,确保绘制内容严格限制在目标区域内:
library(terra) r<-rast(system.file("ex/elev.tif", package="terra")) inset<-c(xmin=6,xmax=6.5,ymin=49.5,ymax=50) # 裁剪栅格至感兴趣区域 r_cropped <- crop(r, inset) plot(NULL,xlim=inset[1:2],ylim=inset[3:4]) plot(r_cropped, add=T, legend=F)
- 方法二:plot时指定ext参数
调用plot(r, add=T)时,通过ext参数指定要显示的栅格范围,强制匹配空绘图的边界:
library(terra) r<-rast(system.file("ex/elev.tif", package="terra")) inset<-c(xmin=6,xmax=6.5,ymin=49.5,ymax=50) plot(NULL,xlim=inset[1:2],ylim=inset[3:4]) plot(r, add=T, legend=F, ext=inset)
这两种方法都能有效避免栅格溢出边距的问题,同时保留terra::plot()对RGB图像的支持能力。
内容的提问来源于stack exchange,提问作者RandyHaas
相关产品推荐
相关产品推荐

