如何在R中制作按邮政编码划分的肯塔基州热力地图
R 3.6.3 环境下绘制肯塔基州邮编热力图方案
假设你的原始数据框命名为ky_zip_data,包含两列:
zip:字符型,肯塔基州邮政编码value:数值型,取值范围为-1到1的待可视化指标
步骤1:安装并加载依赖包
# 首次使用先执行安装,已安装可直接跳过该部分 install.packages(c("tigris", "ggplot2", "dplyr", "scales")) # 加载所需工具包 library(tigris) library(ggplot2) library(dplyr) library(scales)
步骤2:获取肯塔基州邮编边界并匹配自定义数据
# 下载肯塔基州邮编边界数据(ZCTA为统计用邮政编码区域,和实际民用邮编匹配度达99%以上) ky_zcta <- zctas(state = "KY", year = 2010) # 2010版边界适配R3.6.3对应的tigris版本,兼容性更好 # 转为普通数据框格式方便数据匹配 ky_zcta_df <- fortify(ky_zcta, region = "ZCTA5CE10") # 匹配你的自定义指标数值 map_data <- ky_zcta_df %>% left_join(ky_zip_data, by = c("id" = "zip"))
步骤3:绘制热力图
ggplot(map_data, aes(x = long, y = lat, group = group, fill = value)) + geom_polygon(color = "white", size = 0.1) + # 白色邮编分割边界,可自行调整粗细 coord_equal() + # 保持地理图形比例不形变 scale_fill_gradient2( low = "#2c7bb6", # -1对应深蓝色,可自定义色值 mid = "#ffffff", # 0对应白色,可自定义色值 high = "#d7191c", # 1对应深红色,可自定义色值 limits = c(-1, 1), # 固定色阶范围,不会随数据分布偏移 midpoint = 0, name = "自定义图例名称" # 替换为你的指标名 ) + theme_void() + # 清空无关的坐标轴、背景元素 labs(title = "肯塔基州指定指标热力分布")
注意事项
- 你的原始数据中
zip列必须转为字符型,避免肯塔基州以0开头的邮编丢失前导零导致匹配失败,转换代码:ky_zip_data$zip <- as.character(ky_zip_data$zip) - 首次运行
zctas()函数时会提示是否缓存数据,选择同意即可,后续调用无需重复下载 - 若安装最新版包出现兼容性报错,可搜索对应适配R3.6.3的包版本本地安装即可正常运行
内容的提问来源于stack exchange,提问作者EllipticalInitial
相关产品推荐
相关产品推荐

