【问题标题】:How to set ylim and xlim in plot raster in R如何在 R 中的绘图栅格中设置 ylim 和 xlim
【发布时间】:2020-07-18 00:29:23
【问题描述】:

我正在 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")
  • 还是一样,没有任何反应
  • 我无法重现您的问题。可能你想先看看raster 包裹到clip 的图片。
  • 我尝试剪辑但没有帮助删除空间
  • 你只需要调整窗口大小

标签: r plot raster shapefile


【解决方案1】:

我认为spplot 工作正常,但我发现它真的很慢而且很难自定义。

我在 gis.stackexchange 中找到了这个问题的更新 duplicate 并提供了以下答案:

我发现raster::plot 的文档表明您可以指定绘图窗口,根据我的经验,它的效果为零。相反,它将始终假定您提供给它的栅格范围。

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

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

对我来说,这实现了我所追求的。需要注意的是,如果您正在绘制堆栈或砖块,则添加功能在我的经验中不起作用。解决方法是使用subset,比如plot(subset(my_brick,4), add=T)

【讨论】:

  • " 您可以指定绘图窗口,根据我的经验,它的影响为零。"这是一个奇怪的陈述,因为任何简单的测试都表明它有效。
【解决方案2】:

我以前也遇到过这个问题。您可以手动调整绘图区域的大小以删除空白区域,或插入多边形以覆盖 shapefile 中不需要的区域。但最安全的选择是使用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))

【讨论】:

  • 我不仅希望土地具有栅格值,还希望海洋具有栅格值
  • 这只是演示,因为您没有提供可重现的示例。取我代码的最后一行,将“rs”更改为“pm10_mean”,将“id_shp”更改为“shp”以匹配您的数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2013-03-29
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多