求助:使用R语言choroplethr绘制香港选区投票热力图失败
排查香港区域投票数据可视化的R代码问题
嘿,我看了你写的代码,发现几个导致无法运行的关键问题,咱们一步步来修正:
核心问题分析
- 你误用了base R的
map()函数来调用GADM的香港行政区数据,但choroplethr包有自己的绘图逻辑,不能直接这么用; - 你的
hkelection数据框定义不完整,而且没有按照choroplethr要求的结构准备(必须包含region和value两列,且区域名称要和地图数据里的完全匹配); - 香港并不是choroplethrMaps内置的默认地区,需要用自定义地图的方式来处理。
修正后的完整代码步骤
# 安装并加载必要的包(sp包用来处理空间数据) install.packages(c("choroplethr", "choroplethrMaps", "sp")) library(choroplethr) library(sp) # 设置工作路径(替换成你的实际路径) setwd('/Users/hkawngnaw/Downloads') # 加载GADM的香港行政区数据 hkmap <- readRDS("HKG_adm1.rds") # 把空间对象转换成choroplethr能识别的地图数据框 # 这里用NAME_1是因为GADM数据里一级行政区的名称字段默认是NAME_1 hk_map_df <- sp_to_choropleth(hkmap, region_column = "NAME_1") # 完善选举数据:确保region列和地图里的名称完全匹配,添加对应的数值列 # 这里我补全了香港所有18区的示例数据,你替换成自己的真实数据即可 hkelection <- data.frame( region = c('Central and Western', 'Wan Chai', 'Eastern', 'Southern', 'Yau Tsim Mong', 'Sham Shui Po', 'Kowloon City', 'Kwun Tong', 'Wong Tai Sin', 'Tsuen Wan', 'Tuen Mun', 'Yuen Long', 'North', 'Tai Po', 'Sai Kung', 'Sha Tin', 'Kwai Tsing', 'Islands'), value = c(55, 62, 48, 59, 65, 42, 50, 53, 47, 61, 49, 57, 52, 45, 60, 54, 46, 58) # 示例投票数据 ) # 绘制自定义 choropleth 地图 custom_choropleth( df = hkelection, map_df = hk_map_df, title = "香港各区域投票数据可视化", legend_title = "投票指标" )
关键注意事项
- 名称匹配要严格:确保
hkelection里的region名称和hkmap@data$NAME_1里的完全一致(包括大小写、空格、中英文),如果地图里是繁体中文名称,你的数据也要用对应的繁体,否则不匹配的区域会显示灰色; - 检查GADM字段:如果你的HKG_adm1.rds版本不同,名称字段可能不是NAME_1,可以先运行
colnames(hkmap@data)查看具体字段名; - 数据结构正确:choroplethr要求数据框必须有
region(区域标识)和value(要可视化的数值)两列,缺一不可。
内容的提问来源于stack exchange,提问作者Nan Lwin
相关产品推荐
相关产品推荐

