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

如何使用ggplot2的map_data函数填充美国州地图并显示州界线?

解决ggplot2绘制美国州级地图的两个问题

你的代码问题出在没有按州分组绘制多边形,导致所有坐标点被连成了一个不规则图形,自然无法完整填充区域。下面是针对两个需求的修正方案:

1. 完整填充美国州区域

在geom_polygon的aes中添加group = group参数,map_data("state")返回的数据集里,group列专门用来区分不同的州(包括阿拉斯加、夏威夷这类飞地),这样每个州的多边形会被单独绘制:

library(ggplot2)

# 获取州地图数据
StateMap <- ggplot2::map_data("state")

# 绘制完整填充的地图
ggplot(StateMap, aes(x = long, y = lat, group = group)) +
  geom_polygon(fill = "#619CFF")  # 可自定义填充颜色

2. 显示州界线

有两种常用方式添加州界线:

  • 方式一:直接在geom_polygon中设置color参数,用对比色(比如白色)作为界线颜色:
ggplot(StateMap, aes(x = long, y = lat, group = group)) +
  geom_polygon(fill = "#619CFF", color = "white", linewidth = 0.3)
  • 方式二:用geom_path单独绘制界线,这种方式能更灵活控制界线样式:
ggplot(StateMap, aes(x = long, y = lat, group = group)) +
  geom_polygon(fill = "#619CFF") +
  geom_path(color = "white", linewidth = 0.3)

如果需要调整阿拉斯加、夏威夷的位置(默认它们会在主大陆之外的角落),可以对数据集的long和lat做坐标变换,缩小并移动到合适位置,不过这属于额外优化,基础需求按上面的代码就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:27:39