gpt4 book ai didi

r - 在复活节上绘制带有点的人工制品

转载 作者:行者123 更新时间:2023-12-04 15:36:58 25 4
gpt4 key购买 nike

调整绘图窗口大小时,我注意到一些奇怪的行为。考虑

library(sp)
library(rgeos)
library(raster)
rst.test <- raster(nrows=300, ncols=300, xmn=-150, xmx=150, ymn=-150, ymx=150, crs="NA")
sap.krog300 <- SpatialPoints(coordinates(matrix(c(0,0), ncol = 2)))
sap.krog300 <- gBuffer(spgeom = sap.krog300, width = 100, quadsegs = 20)
shrunk <- gBuffer(spgeom = sap.krog300, width = -30)
shrunk <- rasterize(x = shrunk, y = rst.test)
shrunk.coords <- xyFromCell(object = rst.test, cell = which(shrunk[] == 1))
plot(shrunk)
points(shrunk.coords, pch = "+")

如果调整窗口大小,与基础栅格相比,绘制点的范围不同。如果调整窗口大小并绘制 shrunkshrunk.coords再一次,情节很好。谁能解释一下?

最佳答案

如果你直接用 RasterLayer 绘图绘制调整大小问题的方法不会发生。

## gives an error, but still plots 
raster:::.imageplot(shrunk)
points(shrunk.coords, pch = ".")

所以它必须是 .imageplot 之前的原始情节调用中的某些内容。方法被调用。
 showMethods("plot", classes = "RasterLayer", includeDefs = TRUE)

如果我们调用 raster:::.plotraster,它确实会发生直接,这是调用 raster:::.imageplot的函数:
raster:::.plotraster(shrunk, col = rev(terrain.colors(255)), maxpixels = 5e+05)
points(shrunk.coords, pch = ".")

它实际上是在轴标签中,而不是图像本身。看到这个,这忠实地绘制在调整大小:
 raster:::.imageplot(shrunk)
abline(h = c(-80, 80), v = c(-80, 80))

但是这样做,调整大小后线条不再位于 [-80, 80] 处:
plot(shrunk)
abline(h = c(-80, 80), v = c(-80, 80))

所以实际上是在光栅之后绘制的点显示不正确:绘图方法保持纵横比固定,因此扩大绘图不会将光栅圆“拉伸(stretch)”为椭圆。但是,它对之后添加的点做了一些事情,所以调用 par()不能正确处理(可能在 raster:::.imageplot 中)。

查看问题的另一种方法是显示axis() 不知道绘图使用的空间,这与您在重叠绘图时看到的问题相同:
plot(shrunk)
axis(1, pos = 1)

当您调整 x 轴长度的大小时,两个轴不再同步。

关于r - 在复活节上绘制带有点的人工制品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com