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

Folium绘制北卡房价Choropleth地图:颜色及图例异常问题求助

北卡罗来纳州房价Choropleth地图问题修复

核心问题排查

你的代码存在几个关键错误,导致地图渲染异常:

  1. 数据过滤逻辑错误:错误地用地图标题INDICATOR匹配邮编列RegionName,过滤后仅保留空数据或无效数据,后续筛选最大值进一步缩小数据范围,最终没有有效数据关联到GeoJSON多边形,导致渲染黑灰色。
  2. 缺少数据关联参数:未设置key_on参数,Folium无法将DataFrame中的邮编与GeoJSON里的多边形匹配。
  3. 地图初始定位错误:location=[20,10]指向非洲区域,而非北卡罗来纳州,导致地图加载后看不到目标区域。
  4. 颜色方案不符合需求:使用的YlOrRd是黄红渐变,不符合你要的绿到橙过渡需求。
  5. 数据类型不匹配:DataFrame中的邮编(RegionName)可能是数值类型,而GeoJSON中是字符串类型,无法完成匹配。

修复后完整代码

import folium
import pandas as pd
import requests
import os

# 获取工作目录并读取数据
working_directory = os.getcwd()
path = os.path.join(working_directory, 'Desktop', 'NCHomes.csv')  # 用os.path.join避免路径拼接错误
df = pd.read_csv(path)

# 确认房价范围(可选,用于设置颜色区间)
min_price, max_price = df['Homes'].min(), df['Homes'].max()
print(f"房价范围: ${min_price} - ${max_price}")

# 准备地图数据:确保邮编为字符串类型,匹配GeoJSON格式
map_data = df[['RegionName', 'Homes']].copy()
map_data['RegionName'] = map_data['RegionName'].astype(str)  # 转字符串

# 加载北卡邮编GeoJSON数据
geojson_url = 'https://raw.githubusercontent.com/OpenDataDE/State-zip-code-GeoJSON/master/nc_north_carolina_zip_codes_geo.min.json'
geojson = requests.get(geojson_url).json()

# 初始化地图:北卡罗来纳州中心坐标,设置合适缩放级别
m = folium.Map(location=[35.782169, -79.0193], zoom_start=6)

# 添加Choropleth图层
folium.Choropleth(
    geo_data=geojson,
    data=map_data,
    columns=['RegionName', 'Homes'],
    key_on='feature.properties.ZCTA5CE10',  # GeoJSON中邮编字段
    fill_color='YlGnOr_r',  # 反转的黄-绿-橙渐变,满足低房价橙、高房价绿的需求
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name='北卡罗来纳州房价(美元)',
    threshold_scale=[100000, 300000, 500000, 700000, 850000]  # 自定义颜色区间,匹配你的需求
).add_to(m)

# 添加地图标题
title_html = '''
             <h3 align="center" style="font-size:16px"><b>北卡罗来纳州房价分布地图</b></h3>
             '''
m.get_root().html.add_child(folium.Element(title_html))

# 保存或显示地图
m.save('nc_home_prices.html')
m

关键修复说明

  • 数据逻辑修正:直接使用原始DataFrame的邮编和房价数据,无需错误过滤。
  • 数据类型统一:将邮编转为字符串,确保与GeoJSON中的字符串邮编匹配。
  • 添加key_on参数:指定GeoJSON中存储邮编的字段feature.properties.ZCTA5CE10,完成数据与多边形的关联。
  • 调整地图定位:使用北卡罗来纳州中心坐标[35.782169, -79.0193],缩放级别设为6,确保加载后直接显示目标区域。
  • 颜色方案调整:使用YlGnOr_r反转渐变,实现房价越高颜色越绿、越低越橙的效果;通过threshold_scale设置10万到85万的区间,精准匹配你的需求。
  • 添加地图标题:通过HTML元素添加居中标题,解决无地图名称的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:25:22