如何在R中设置绘图栅格的ylim和xlim?

5

我正在使用R制作栅格数据绘图。当我调整到要处理的区域时,R显示不想被裁剪的ylim。

我尝试过:

# set lon lat
ylim=c(-4,2)
xlim=c(118,126)

plot(pm10_mean,xlim=xlim, ylim=ylim)
plot(shp, add=TRUE)
plot(shp2, add=TRUE)

但我得到的图片如下所示

在此输入图片描述

如何删除2上方和-4下方的空白? 我只想绘制xlimylim中的区域


尝试设置yaxs="i"xaxs="i"。就像这样plot(pm10_mean,xlim=xlim, ylim=ylim, xaxs = "i", yaxs = "i") - deepseefan
仍然相同,没有任何变化。 - ExHunter
我无法重现你的问题。也许你想先查看一下“raster”包来对图像进行“裁剪”。 - deepseefan
我尝试了剪切,但它并不能帮助去除空格。 - ExHunter
你只需要调整窗口大小。 - Robert Hijmans
3个回答

3

我认为spplot的功能很好,但是它运行非常缓慢,并且难以自定义。

我在gis.stackexchange中找到了一个更近期的重复问题,并提供以下答案:

我发现raster::plot的文档说明可以指定绘图窗口,但在我的经验中,它没有任何效果。相反,它将始终假定您给出的栅格范围。

我的建议解决方法是首先使用空对象绘制所需的绘图窗口,然后将栅格绘图添加到此窗口。

my_window <- extent(-4, 2, 118, 126)
plot(my_window, col=NA)
plot(my_raster, add=T)

对我来说,这达到了我想要的效果。但是如果你正在绘制一个堆栈或砖块,我的经验是add功能无法正常工作。解决方法是使用subset,例如:plot(subset(my_brick,4), add=T)


“你可以指定绘图窗口,但根据我的经验,它没有任何影响。”这是一个奇怪的说法,因为任何简单的测试都表明它是有效的。 - Robert Hijmans

1

我以前遇到过这个问题。您可以手动调整绘图区域以删除空白区域,或插入多边形来覆盖不需要的形状文件区域。但最安全的选项是使用spplot,因为它会自动调整绘图区域:

require(maptoolS)
require(raster)

data(wrld_simpl)
rs=raster()
rs[]=1
id_shp=wrld_simpl[which(wrld_simpl$ISO2=="ID"),]
rs=crop(rs,id_shp)
rs=disaggregate(rs,40)
rs=mask(rs,id_shp)

spplot(rs,ylim=c(-4,2),xlim=c(118,126),sp.layout=list('sp.lines', id_shp, lwd=2,first=F))

enter image description here


我希望不仅陆地有栅格值,海洋也有。 - ExHunter
那只是演示,因为您没有提供可重现的示例。取我的代码的最后一行,将“rs”更改为“pm10_mean”,将“id_shp”更改为“shp”,以匹配您的数据。 - drJones

0

只需简单地绘制一个空图并添加您的光栅图像,就可以轻松完成。

plot(NULL, xlim = c(-114.5, -35.5), ylim = c(-24.5, 29.5), asp = 30/30,
     xlab = "Longitude", ylab = "Latitude")
plot(your_raster, add = T)

堆叠似乎仍然有效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接