【发布时间】:2020-09-10 14:38:34
【问题描述】:
我有一个数据框(见下文),其中包含超过 50 000 个值,每个值都与一个位置(纬度、经度)相关联。我想计算 5° 纬度 x 5° 经度网格的每个单元格的平均值,以创建热图。最终目标是在测深地图上绘制此网格。
我查看了类似Average values of a point dataset to a grid dataset 的问题。但我无法用我自己的数据复制这些示例。可悲的是,我被困在创建网格的第一步。
我的数据如下所示:
library(sp)
library(proj4)
coordinates(data) <- c("lon", "lat")
proj4string(data) <- CRS("+init=epsg:4326") #defined CRS to WGS 84
df<- data.frame(data)
> head(df)
lon lat value
1 -48.1673562 57.71791 822.9
2 -48.7430053 57.83568 1302.3
3 -48.5662663 57.82087 1508.0
4 -48.3252052 58.29815 224.0
5 -47.1716772 58.42417 38.0
6 -46.4098311 58.67651 431.2
7 -45.8071218 58.70022 365.6
8 -45.5558936 58.46975 50.0
理想情况下,我想使用 ggplot2 在 marmap 包中的地图上绘制网格(见下文):
library(marmap)
library(ggplot2)
atlantic <- getNOAA.bathy(-80, 40, 0, 90, resolution = 25, keep = TRUE)
atl.df <- fortify(atlantic)
map <- ggplot(atl.df, aes(x=x, y=y)) +
geom_raster(aes(fill=z), data=atl.df) +
geom_contour(aes(z=z),
breaks=0, #contour for continent
colour="black", size=1) +
scale_fill_gradientn(values = scales::rescale(c(-5000, 0, 1, 2400)),
colors = c("steelblue4", "#C7E0FF", "gray40", "white"))
【问题讨论】:
标签: r ggplot2 geospatial raster spatial