Zip_Choropleth地图制作:解决超时问题及优化需求
解决Zip Choropleth超时问题并完成地图优化
一、原始超时问题的根因与解决
运行zip_choropleth时卡顿超时,核心原因是输入数据包含非亚利桑那州的邮编,导致程序加载并处理大量无关地理数据。通过过滤仅保留亚利桑那州的邮编即可彻底解决该问题。
二、地图优化方案实现
针对当前需求,需完成两项优化,以下是整合后的完整可运行代码:
准备依赖与数据
# 安装并加载所需包 devtools::install_github("arilamstein/choroplethrZip@v1.5.0") library(choroplethrZip) library(dplyr) library(choroplethr) library(ggplot2) # 已过滤为亚利桑那州邮编的目标数据 Pop_Zip <- structure(list( region = c("85324", "85332", "85360", "85362", "85901", "85902", "85911", "85912", "85920", "85923"), value = c(363L, 238L, 75L, 71L, 4454L, 136L, 68L, 31L, 39L, 132L)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA, -10L), groups = structure(list(region = c("85324", "85332", "85360", "85362", "85901", "85902", "85911", "85912", "85920", "85923"), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -10L), .drop = TRUE))
整合两项优化的地图代码
# 定义需要叠加边界的亚利桑那县 AZ_County <- c("Apache County", "Coconino County", "Mohave County", "Navajo County", "Yavapai County") # 获取目标县的地理数据 county_data <- get_county_map(state = "arizona", resolution = 2) %>% filter(NAME %in% AZ_County) # 绘制地图并应用优化 zip_choropleth(Pop_Zip, state_zoom = "arizona", title = "Test", legend = "Population" ) + # 应用指定的自定义渐变调色板 scale_fill_gradientn(colours = c("#FFFFFF","#f688ee","#000775"), name = "Population") + # 叠加目标县的黑色边界线 geom_polygon(data = county_data, aes(x = long, y = lat, group = group), fill = NA, color = "black", size = 0.8) + coord_map()
优化细节说明
- 自定义调色板:通过
scale_fill_gradientn替换默认填充规则,实现从白色到粉紫色再到深蓝色的渐变效果,完全匹配需求指定的色值。 - 县边界叠加:借助
get_county_map获取亚利桑那州的县地理数据,筛选出目标县后,用geom_polygon绘制无填充的边界线,确保与邮编地图坐标系一致。
内容的提问来源于stack exchange,提问作者John Ryan
相关产品推荐
相关产品推荐

