문제

플롯 창 크기를 조정할 때 이상한 동작을 알아 차 렸습니다.를 고려하십시오

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))
.

실제로 래스터가 잘못 표시된 후에는 플롯 메소드가 종횡비를 고정시킵니다. 그래서 플롯을 넓히지 않으므로 래스터 서클을 타원으로 "스트레칭"하지 않습니다. 그러나 나중에 추가 된 점에서 뭔가를 수행하므로 par() 호출을 올바르게 처리해서는 안됩니다 (아마 raster:::.imageplot).

문제를 보는 또 다른 방법은 축 ()이 플롯에서 사용되는 공간을 알지 못하는 것입니다. 와 동일한 문제가있는 것과 동일한 문제입니다.

plot(shrunk)
axis(1, pos = 1)
.

x 축 길이의 크기를 조정하면 두 축이 더 이상 동기화되지 않습니다.

다른 팁

래스터가 있으므로 plot ()을 이미지 ()로 교체하십시오.나는 똑같은 문제가 있었지만 이것은 나를 위해 그것을 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top