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

Folium Choropleth美国州地图仅显灰色,薪资数据无法渲染求助

Folium Choropleth地图全灰问题排查方案

核心排查方向

地图全灰本质是数据匹配失败或参数配置错误,按以下步骤逐一验证:

1. 确认GeoJSON与CSV的匹配键完全一致

  • 检查us-states.json中标识州的字段(比如id或name),和CSV中对应州的字段(比如state列)格式必须完全匹配:
    • 例:GeoJSON用州缩写(CA),CSV就不能用全称California;反之同理。
    • 用代码验证匹配率:
      import json
      import pandas as pd
      
      # 提取GeoJSON中的州键集合
      with open('us-states.json') as f:
          states_geo = json.load(f)
      geo_state_keys = {feature['properties']['id'] for feature in states_geo['features']}
      
      # 提取CSV中的州键集合
      df = pd.read_csv('your_data.csv')
      csv_state_keys = set(df['state'].unique())
      
      # 输出不匹配项
      print("GeoJSON有但CSV缺失的州:", geo_state_keys - csv_state_keys)
      print("CSV有但GeoJSON缺失的州:", csv_state_keys - geo_state_keys)
      

2. 检查Choropleth参数配置

确保关键参数对应关系正确:

  • key_on必须严格指向GeoJSON的属性路径,比如feature.properties.id(不能省略feature.前缀);
  • columns必须是CSV中的[匹配键列, 数值列],比如['state', 'total_yearly_compensation'];
  • 正确配置示例:
    import folium
    import pandas as pd
    
    df = pd.read_csv('your_data.csv')
    m = folium.Map(location=[37.0902, -95.7129], zoom_start=4)
    
    folium.Choropleth(
        geo_data='us-states.json',
        data=df,
        columns=['state', 'total_yearly_compensation'],
        key_on='feature.properties.id',  # 与GeoJSON字段路径完全对应
        fill_color='YlGn',
        fill_opacity=0.7,
        line_opacity=0.2,
        legend_name='Total Yearly Compensation (USD)'
    ).add_to(m)
    
    folium.LayerControl().add_to(m)
    m.save('salary_map.html')
    

3. 验证数值列有效性

  • 检查total_yearly_compensation和base_salary是否为数值类型,排查字符串、空值或异常值:
    # 查看列类型与非数值情况
    print(df[['total_yearly_compensation', 'base_salary']].info())
    # 转换非数值为NaN并删除无效行
    df['total_yearly_compensation'] = pd.to_numeric(df['total_yearly_compensation'], errors='coerce')
    df = df.dropna(subset=['total_yearly_compensation'])
    

4. 确认GeoJSON文件完整性

  • 检查us-states.json未损坏,features数组包含完整的美国州地理数据,每个feature都有指定的属性字段;
  • 可本地用JSON格式化工具打开,验证结构是否正常。

5. 测试最小可用示例

用极简数据排除复杂逻辑干扰:

  • 创建测试CSV:
    state,total_yearly_compensation
    CA,150000
    NY,140000
    
  • 用该数据生成地图,若能正常显色,说明原数据存在匹配/格式问题;若仍为灰色,检查GeoJSON路径或Folium版本兼容性。

内容的提问来源于stack exchange,提问作者John.Hicks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:54:20