使用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
相关产品推荐
相关产品推荐

