使用R与Plotly制作邮政编码等值区域图遇空白问题求助
解决方案
你的代码存在两个关键问题,直接导致地图空白:
featureidkey参数匹配错误featureidkey的作用是指定GeoJSON属性中,与你的locations字段(即邮编)对应的键值。你当前设置为"objectid",但objectid是GeoJSON的内部ID,和你数据框里的邮编完全不匹配。
先运行str(chi_zips)查看GeoJSON的属性结构,找到存储邮编的字段名(芝加哥数据门户的邮编GeoJSON通常用zip或postal_code,且嵌套在properties下),然后将featureidkey修改为对应的路径,比如"properties.zip"。地图中心与缩放级别错误
你设置的坐标(-95.71, 37.09)是美国中部而非芝加哥的位置,且zoom=2的缩放级别太小,导致芝加哥区域被缩到几乎看不见。芝加哥的中心坐标应为(-87.63, 41.88),建议将zoom调整为10左右。
修改后的示例代码:
# 先检查GeoJSON的属性结构,确认邮编字段 str(chi_zips) fig <- plot_ly() fig <- fig %>% add_trace( type="choroplethmapbox", geojson=chi_zips, locations=as.character(abcd$zip_list), z=abcd$Fail, colorscale="Viridis", # 替换为你实际找到的邮编字段路径 featureidkey="properties.zip", zmin=0, zmax=1, marker=list(line=list(width=0), opacity=0.5) ) fig <- fig %>% layout( mapbox=list( style="carto-positron", zoom = 10, center=list(lon= -87.63, lat=41.88)) ) fig
额外注意事项:
- 确保数据框中的邮编与GeoJSON中的邮编格式完全一致(均为字符串、无多余空格)
- 如果GeoJSON加载异常,可用
geojsonio::geojson_read()重新加载并验证格式
内容的提问来源于stack exchange,提问作者AirIcarus
相关产品推荐
相关产品推荐

