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

R语言ggplot如何绘制按点密度着色的欧洲网格地图

答复

可行性结论

完全可以通过ggplot2实现目标效果:生成覆盖欧洲区域的等尺寸规则网格,按单元格内记录点数量映射填充颜色,效果和参考图一致,且后续自定义调整的灵活度高于levelplot。

具体实现路径

核心逻辑为:先按自定义尺寸生成覆盖研究范围的等间隔规则网格,再空间匹配统计每个网格内的落点总数,最后通过矩形图层绘制网格并叠加底图,全程可在ggplot2生态内完成,不需要依赖其他绘图包。
操作步骤:

  • 基于现有清洗完成的陆地有效点数据集,先设定网格尺寸参数,生成覆盖整个欧洲研究区的等尺寸网格,为每个网格分配唯一标识
  • 将所有记录点匹配到所属网格,分组统计每个网格内的点数量,将统计结果关联回网格数据集,无点的网格可按需保留或过滤
  • 绘图时优先绘制带密度值的网格图层,将填充色映射为点数字段,再叠加国家行政边界图层,调整坐标范围、配色、图例等元素即可

复用代码

在你原有代码运行得到europe_land(仅含陆地有效点的经纬度数据框)、world(世界地图底图数据)的基础上,追加以下代码即可出图:

library(sf)
# 网格参数设置,可按需调整
cell_size <- 2 # 网格边长,单位为经纬度度数,修改该值即可调整网格大小
xmin <- -15
xmax <- 45
ymin <- 30
ymax <- 75

# 生成覆盖研究区的规则网格
x_breaks <- seq(xmin, xmax, by = cell_size)
y_breaks <- seq(ymin, ymax, by = cell_size)
grid_df <- expand.grid(
  xmin = x_breaks[-length(x_breaks)],
  ymin = y_breaks[-length(y_breaks)]
) %>% 
  mutate(
    xmax = xmin + cell_size,
    ymax = ymin + cell_size,
    grid_id = row_number()
  )

# 统计每个网格内的点数量
europe_land <- europe_land %>% 
 mutate(
    x_grid = floor((long - xmin)/cell_size)*cell_size + xmin,
    y_grid = floor((lat - ymin)/cell_size)*cell_size + ymin
  )
grid_count <- europe_land %>% 
  count(x_grid, y_grid, name = "point_count")
grid_df <- grid_df %>% 
  left_join(grid_count, by = c("xmin" = "x_grid", "ymin" = "y_grid")) %>% 
  mutate(point_count = tidyr::replace_na(point_count, 0)) %>% 
  filter(point_count > 0) # 过滤无点的海洋网格,不需要可删除该行

# 绘制最终图件
ggplot() +
  geom_rect(
    data = grid_df,
    aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = point_count),
    color = NA, alpha = 0.8
  ) +
  geom_map(
    data = world, map = world,
    aes(long, lat, map_id = region),
    color = "white", fill = NA, linewidth = 0.2
  ) +
  # 可替换为其他fill标度调整配色
  scale_fill_viridis_c(name = "记录点数量", direction = -1) +
  coord_sf(xlim = c(xmin, xmax), ylim = c(ymin, ymax), expand = FALSE) +
  theme_minimal() +
  labs(x = "经度", y = "纬度")

调整说明

  • 修改cell_size的赋值即可自由调整网格大小,所有网格始终保持等尺寸
  • 替换scale_fill_viridis_c为其他填充标度(如scale_fill_gradient)可自定义配色,匹配参考图的色彩风格
  • 若需要网格严格贴合陆地边界、剔除网格中海域部分的填充,可将网格转为sf矢量对象后,与欧洲陆地边界做相交裁剪即可

内容的提问来源于stack exchange,提问作者J. Lan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:00:10