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

使用ggplot与正射投影在全球地图上绘制等高线

优化后的ggplot密度地图代码

我来帮你把这段代码补全并优化,让它能生成符合预期的带世界地图底图的密度热力图:

# 先加载必要的包
library(ggplot2)
library(maps)

# 加载世界地图数据
map.world <- map_data("world")

# 构建绘图对象
plot <- ggplot() +
  # 添加世界地图底图作为背景
  geom_polygon(data = map.world, aes(x = long, y = lat, group = group), 
               fill = "lightgray", color = "white") +
  # 添加你的数据集的2D密度层
  stat_density2d(data = DATASET, aes(x = V2, y = V1, fill = ..level.., alpha = ..level..),
                 geom = 'polygon', colour = 'black') +
  # 设置颜色渐变
  scale_fill_continuous(low = "green", high = "red") +
  # 隐藏alpha图例
  guides(alpha = "none") +
  # 扩展坐标轴范围以匹配世界地图
  expand_limits(x = map.world$long, y = map.world$lat) +
  # 设置地图比例为固定值,避免拉伸变形
  coord_fixed(ratio = 1.3) +
  # 优化主题样式
  theme(panel.grid = element_blank(),
        panel.border = element_blank(),
        axis.text = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_blank())

# 显示绘图
print(plot)

关键优化点说明:

  • 补充了library(maps):因为map_data("world")依赖这个包,缺失的话会直接报错
  • 添加了世界地图底图:用geom_polygon把世界地图作为背景,让密度层能叠加在真实地图上,更贴合你想要的“类似示例地图”效果
  • 补全了theme的缺失部分:把panel.border设为element_blank(),同时隐藏了所有坐标轴相关元素,让地图视觉更整洁
  • 加入coord_fixed(ratio = 1.3):保证地图不会因为画布比例而拉伸变形,这个比例可以根据你的需求微调
  • 调整了代码的链式写法:用+直接串联所有图层,比分步赋值更简洁易读

注意事项:

  • 确保你的DATASET里的V1是纬度(对应y轴)、V2是经度(对应x轴),不然密度层会显示在错误的地理区域
  • 如果你的数据点集中在某个特定区域,可以调整expand_limits或者用xlim/ylim来聚焦该区域,不用强制显示整个世界

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:51:47