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

如何在R语言中利用Excel数据创建Choropleth地图?

用R实现邮编级别的Choropleth地图(基于频率数据)

方法一:用choroplethr(最简便,专门适配邮编地图)

choroplethr自带美国邮编的地理边界数据,不用自己找 shp 文件,完美匹配你的场景:

  1. 安装并加载依赖包
    先装好用到的工具包,包括读Excel的readxl和处理邮编地图的choroplethr、choroplethrZip:
install.packages(c("readxl", "choroplethr", "choroplethrZip"))
library(readxl)
library(choroplethr)
library(choroplethrZip)
  1. 读取Excel数据
    把代码里的文件路径换成你实际的Excel文件路径:
df <- read_excel("你的数据文件路径.xlsx")
  1. 调整数据格式
    choroplethr要求数据必须有两列:region(邮编,要转成字符型,防止丢失前导零)和value(频率值),所以做个简单调整:
colnames(df) <- c("region", "value")
df$region <- as.character(df$region)
  1. 生成基础地图
    直接调用zip_choropleth就能出图,还能指定标题或者缩小显示范围(比如只看某一个州):
# 生成全国范围的邮编地图
zip_choropleth(df, title = "各邮编区域频率分布", legend = "频率")

# 如果只需要看特定州,比如堪萨斯州(KS),加个state_zoom参数
zip_choropleth(df, title = "堪萨斯州邮编区域频率分布", legend = "频率", state_zoom = "kansas")
  1. 自定义样式(可选)
    想换个好看的配色?结合ggplot的颜色标尺就行,比如用色盲友好的viridis配色:
zip_choropleth(df, title = "各邮编区域频率分布", legend = "频率") +
  scale_fill_viridis_c(option = "plasma", direction = -1)

方法二:用ggplot2(需自行准备邮编边界数据)

如果一定要用ggplot,得先自己搞到美国邮编的shp文件(比如从人口普查局下载),然后做空间连接:

  1. 读取shp文件:sf::st_read("zip_codes.shp")
  2. 把你的数据和shp文件按邮编关联:merged_data <- merge(zip_shp, df, by.x = "ZIPCODE", by.y = "Zip")
  3. 用ggplot绘制:
library(ggplot2)
library(sf)

ggplot(merged_data) +
  geom_sf(aes(fill = Frequency)) +
  scale_fill_gradient(low = "lightblue", high = "darkblue") +
  labs(title = "各邮编区域频率分布", fill = "频率") +
  theme_minimal()

这种方法步骤更繁琐,优先推荐choroplethr。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:45:42