You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在地图上叠加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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:53:12