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

Folium制作Choropleth地图如何添加悬停/点击显示州名与难民数的标注

Folium Choropleth地图实现州级数据交互的解决方案

该需求完全可实现,Folium原生支持Choropleth图层的悬停高亮、自定义弹窗提示功能,无需额外引入第三方依赖,仅需在原有可运行代码基础上补充少量配置即可落地。

前置修正

先对齐原有代码的变量逻辑:现有代码中通过pd.read_excel读入的数据集变量为twentysa,但Choropleth配置中传入的是未定义的thirteensa,运行前需确认使用的对应年份数据集变量名,避免触发未定义报错。

核心交互配置

  • 开启悬停高亮:给Choropleth组件添加highlight=True参数,鼠标移动到对应州区域时,该区域会自动和其他区域形成视觉区分,降低交互识别成本。
  • 自定义提示内容:通过Choropleth内置的tooltip参数,绑定GeoJSON自带的州名字段、业务数据里的难民流入量字段,即可实现悬停时自动弹出带目标信息的提示框。
    字段匹配逻辑和现有配置完全兼容:当前设置的key_on="feature.id"对应GeoJSON里存储的州两字母缩写,和Excel数据里的State列字段匹配,Folium会自动完成数据关联,无需手动做字段连接。

调整后可运行的完整代码

import pandas as pd
import folium 

# 替换为你实际使用的对应年份难民数据集
refugee_dataset = pd.read_excel("State_abrv (9).xlsx")

geo_source = (
    "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
state_geo = f"{geo_source}/us-states.json"

h = folium.Map(location=[48, -102], zoom_start=3)

folium.Choropleth(
    geo_data=state_geo,
    name="2013 难民流入数据",
    data=refugee_dataset,
    columns=["State", "Refugee Influx"],
    key_on="feature.id",
    fill_color="BuPu",
    fill_opacity=0.8,
    line_opacity=0.3,
    legend_name="2013年各州难民流入量",
    # 新增交互逻辑
    highlight=True,
    tooltip=folium.features.GeoJsonTooltip(
        fields=["name", "Refugee Influx"],
        aliases=["州名称:", "难民流入量:"],
        localize=True,
        sticky=False
    )
).add_to(h)

# 可选:添加图层切换控制器
folium.LayerControl().add_to(h)

h

实际效果与注意事项

  • 鼠标悬停到任意州的多边形区域时,会自动弹出格式化的提示框,同步展示该州的完整名称、匹配到的难民流入量数值,当前悬停的州会触发高亮效果。
  • 若需调整提示触发方式为点击弹出,可将tooltip配置中的sticky参数设为True,即可实现点击区域后固定展示提示内容的效果。
  • 若出现部分州数据匹配失败的问题,可检查Excel中State列的两字母缩写格式,确保和GeoJSON中存储的州ID格式完全一致(无多余空格、大小写匹配)。
  • 兼容性说明:如果上述tooltip配置不生效,可先通过pip install --upgrade folium升级到Folium最新稳定版,旧版本组件对交互参数的支持不全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 00:06:04