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

如何在Folium分级统计图(Choropleth Map)上添加常驻文本

实现Folium分级统计图的永久文本显示

要让BoroCode文本始终显示在地图区域上(而非仅鼠标悬停时显示),可以用以下两种方法实现:

方法一:在分级图层后添加文本标注

先计算每个区域的几何中心,再在中心位置添加常驻文本:

import folium
import geopandas

path_to_data = geopandas.datasets.get_path("nybb")
gdf = geopandas.read_file(path_to_data)

# 计算每个区域的中心坐标,用于放置文本
gdf["centroid"] = gdf.geometry.centroid
gdf["lon"] = gdf.centroid.x
gdf["lat"] = gdf.centroid.y

# 创建基础地图
m = folium.Map(location=[40.730610, -73.935242])

# 添加分级统计图层(保留原有的悬停提示)
gdf.explore(
    m=m,
    column="BoroName", 
    scheme="naturalbreaks",  
    legend=True, 
    k=10,
    cmap='winter',
    legend_kwds=dict(), 
    name="boroughs",
    tooltip='BoroCode'
)

# 遍历每个区域,添加永久文本标注
for idx, row in gdf.iterrows():
    folium.Marker(
        location=[row["lat"], row["lon"]],
        # 自定义文本样式,可调整字体大小、颜色
        icon=folium.DivIcon(
            html=f'<div style="font-size: 12px; color: black; font-weight: bold;">{row["BoroCode"]}</div>'
        )
    ).add_to(m)

folium.LayerControl().add_to(m) 
m

方法二:通过GeoJson直接添加文本标注

这种方式可以更灵活地控制文本图层的显示:

import folium
import geopandas

path_to_data = geopandas.datasets.get_path("nybb")
gdf = geopandas.read_file(path_to_data)

# 创建基础地图
m = folium.Map(location=[40.730610, -73.935242])

# 添加原有的分级统计图层
gdf.explore(
    m=m,
    column="BoroName", 
    scheme="naturalbreaks",  
    legend=True, 
    k=10,
    cmap='winter',
    legend_kwds=dict(), 
    name="boroughs",
    tooltip='BoroCode'
)

# 加载GeoDataFrame并添加永久文本
folium.GeoJson(
    gdf,
    # 隐藏GeoJson的图形层,只显示文本
    style_function=lambda x: {'fillOpacity': 0, 'color': 'transparent'},
    pointToLayer=lambda feature, latlng: folium.Marker(
        location=latlng,
        icon=folium.DivIcon(
            html=f'<div style="font-size: 14px; color: darkred;">{feature["properties"]["BoroCode"]}</div>'
        )
    ),
    # 禁用该图层的悬停和弹窗
    tooltip=None,
    popup=None
).add_to(m)

folium.LayerControl().add_to(m) 
m

注意事项

  • folium.DivIcon支持HTML样式,你可以根据需求调整文本的字体大小、颜色、粗细等。
  • 文本的位置基于区域的几何中心(centroid),如果某些区域形状特殊,可手动调整坐标优化显示位置。
  • 两种方法都保留了原有的tooltip功能,同时新增常驻文本,兼顾两种显示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:27:20