如何为带自定义彩色标记的Folium地图添加关联的线性颜色条
Folium 自定义色条实现方案
直接基于你已有的代码补充Branca色阶组件即可完成,完整可运行代码如下:
import folium # Folium内置Branca组件,无需额外安装 from branca.colormap import LinearColormap # 原有数据定义 geo_pts = [(43.613104184487966, 3.888499606480643), (43.62380243834923, 3.857292924347734), (43.59878916204914, 3.8655616117551346), (43.619188835688256, 3.863774797275551), (43.609084246467894, 3.863354463170052), (43.59877648226874, 3.8949413546743608), (43.59641535416491, 3.9004649638210434), (43.60835143135754, 3.868352674165506), (43.61140610033741, 3.895321677934005), (43.59707832354887, 3.8988040501915093), (43.59098438823383, 3.8800897856962373), (43.60739277101043, 3.8667832414359857), (43.61663960717645, 3.895544460094556), (43.62348570738639, 3.865234073884166), (43.61294571774928, 3.8914346874368637)] col_hex=['#8000ff', '#5e35fe', '#3c68f9', '#1996f3', '#08bee9', '#2adddd', '#4df3ce', '#6efebe', '#90feab', '#b2f396', '#d4dd80', '#f6be68', '#ff964f', '#ff6835', '#ff351b'] # 原有地图初始化 fm = folium.Map(location=geo_pts[0], tiles="Stamen Terrain") # 原有标记绘制逻辑 for num, loc in enumerate(geo_pts): folium.Marker( location=loc, popup="Pts" + '{:02d}'.format(num), icon=folium.Icon(color='white',icon_color=col_hex[num], icon="star", prefix="fa"), ).add_to(fm) # 新增:生成匹配的线性色条 color_bar = LinearColormap( colors=col_hex, vmin=1, # 左端点紫色对应数值1 vmax=15, # 右端点红色对应数值15 caption="点位编号映射(1-15)", tick_labels=[1, 5, 10, 15] # 精简刻度,避免过密 ) # 新增:将色条挂载到地图 color_bar.add_to(fm) # 可选:保存为本地HTML文件 # fm.save("geo_point_map.html")
关键调整说明
- 颜色匹配:直接复用现有
col_hex列表,无需手动插值,色阶过渡与标记颜色完全一致 - 数值映射:
vmin/vmax严格对应「1紫15红」的规则 - 位置自定义:色条默认在地图右下角,可通过
color_bar.position = 'bottomleft'调整位置 - 离散色条切换:若需要每个色对应独立数值节点,将
LinearColormap替换为branca.colormap.StepColormap,并添加index=list(range(1,16))参数即可
内容的提问来源于stack exchange,提问作者lhoupert
相关产品推荐
相关产品推荐

