如何在地图上叠加geom_hex并展示lunge_count平均值?
问题描述
我尝试在地图上叠加六边形区域,展示lunge_count的平均值,但目前只能生成两个独立的图表(一个geom_hex图、一个地图)。
使用的库
# libraries library(dplyr) # 数据整理 library(lubridate) # 处理日期时间 library(readr) # 读取数据 library(sf) # 处理空间数据 library(ggplot2) # 绘图/制图 library(ggspatial) # 地图美化 library(rnaturalearth) # 获取陆地数据 library(rnaturalearthhires) # 获取高精度陆地数据 library(patchwork) # 拼接地图 library(leaflet) # 提供美观的调色板 library(plotrix)
示例数据
ptt depth_m duration_s duration_m lunge_count year id lon lat 9946 5883 51 778 12.96667 0 2023 2023MX-Mno-05883 -107.2284 22.81825 9947 5883 53 714 11.90000 0 2023 2023MX-Mno-05883 -107.2284 22.81825 9948 5883 49 696 11.60000 1 2023 2023MX-Mno-05883 -107.2284 22.81825 9949 5883 45 756 12.60000 0 2023 2023MX-Mno-05883 -107.2284 22.81825 9950 5883 45 780 13.00000 0 2023 2023MX-Mno-05883 -107.2284 22.81825 9951 5883 45 752 12.53333 0 2023 2023MX-Mno-05883 -107.2284 22.81825
现有代码
海洋地图信息
esri_ocean <- paste0('https://services.arcgisonline.com/arcgis/rest/services/','Ocean/World_Ocean_Base/MapServer/tile/${z}/${y}/${x}.jpeg')
创建海洋底图
basemap36 <- ggplot() + annotation_map_tile(type = esri_ocean, zoomin = 1, progress = "none") + coord_sf(crs = 4326,xlim = c(-100, -125),ylim = c(17, 36))
尝试绘制地图与六边形平均值
basemap36 & ggplot(breeding_redo_5801, aes(lon, lat, z = lunge_count)) & stat_summary_hex(fun = mean)
结果
生成两个独立的图表,无法实现地图与六边形图层的叠加。
其他尝试
我曾使用以下代码实现了地图与图表的叠加,但得到的是六边形内lunge_count的总和而非平均值:
basemap36 & geom_hex(data = breeding_redo_5801, aes(x = lon, y = lat, z = lunge_count)) & stat_summary_hex(fun = mean)
结果
地图与六边形图层成功叠加,但六边形展示的数值是lunge_count的总和,不是我需要的平均值。
内容的提问来源于Stack Exchange,提问作者Allison Kane
相关产品推荐
相关产品推荐

