【发布时间】:2021-02-15 10:22:46
【问题描述】:
我正在尝试在地理边界内裁剪热图(或“geom_tile”)。
我为沿经度和纬度坐标的热图定义了一个随机数据框。
set.seed(20)
lon = seq(from = 3.4, to = 6.3, by = 0.1)
lat = seq(from = 13.3, to = 10.1, by = -0.1)
lati <- c()
long <- c()
for (i in 1:length(lat)) {
for (j in 1:length(lon)) {
lati <- c(lati,lat[i])
long <- c(long,lon[j])
}
}
vals = rnorm(length(lati))
df <- data.frame(
longitude=long,
latitude=lati,
value=vals)
然后我划定地理边界,专门针对尼日利亚的 Kebbi 州。
library(raster)
library(sf)
nga <- getData('GADM', country='NGA', level=1)
keb <- subset(nga,NAME_1 %in% "Kebbi")
keb2 <- st_as_sf(keb)
然后我结合热图和地理边界:
library(ggplot2)
tilekeb <- ggplot() + geom_tile(data=df,aes(x=longitude,y=latitude,fill=vals),alpha=1/2,color="black",size=0) +
geom_sf(data = keb2, inherit.aes = FALSE, fill = NA)
我的目标是剪切(裁剪)边界之外的部分,仅将热图留在有限的地理边界内。有人对如何在 R/ggplot 中做到这一点有想法吗?
谢谢
【问题讨论】:
-
松散相关——恰恰相反。 stackoverflow.com/a/59958366/7941188
-
另一个注意事项 - 检查burns-stat.com/pages/Tutor/R_inferno.pdf - 圈 2。通过以正确的长度(或更长)预定义向量来避免增长的对象,在这种情况下,例如
lati <- numeric(length(lon) *length(lat))
标签: r ggplot2 geospatial crop