如何为Folium地图添加自定义图例?附现有代码及需求
给Folium地图加图例的两种方法
你可以用以下两种方式给你的地图添加图例,说明蓝色标记对应「其他医院」,红色标记对应「Dayton医院」:
方法1:自定义HTML静态图例
这个方法会在地图上添加一个固定位置的图例,样式更灵活:
import folium # 初始化地图 m = folium.Map(location=[39.735,-84.15], zoom_start=10.5) # 遍历添加原有标记 for idx, row in gdf1.iterrows(): folium.Marker( [row['Latitude'], row['Longitude']], popup=row['Name'], icon=folium.Icon(color=row['Colors']) ).add_to(m) # 编写图例的HTML代码 legend_html = ''' <div style="position: fixed; bottom: 50px; left: 50px; width: 180px; height: 80px; background: white; border: 2px solid grey; z-index: 9999; font-size: 14px; padding: 10px;"> <p><b>图例</b></p> <p><i class="fa fa-map-marker fa-2x" style="color:blue"></i> 其他医院</p> <p><i class="fa fa-map-marker fa-2x" style="color:red"></i> Dayton医院</p> </div> ''' # 把图例添加到地图上 m.get_root().html.add_child(folium.Element(legend_html)) # 保存地图 m.save('hospital_map_with_legend.html')
说明:
- 图例固定在地图左下角,你可以修改
bottom、left值调整位置。 - 用Font Awesome图标模拟标记样式,Folium默认自带这个图标库,不用额外引入。
方法2:用FeatureGroup做可切换图例
如果需要让用户能开关不同类别的标记,用这种方法更合适:
import folium m = folium.Map(location=[39.735,-84.15], zoom_start=10.5) # 创建两个特征组,分别对应两类医院 dayton_hospitals = folium.FeatureGroup(name='Dayton医院') other_hospitals = folium.FeatureGroup(name='其他医院') # 按颜色分类添加标记 for idx, row in gdf1.iterrows(): marker = folium.Marker( [row['Latitude'], row['Longitude']], popup=row['Name'], icon=folium.Icon(color=row['Colors']) ) if row['Colors'] == 'red': marker.add_to(dayton_hospitals) elif row['Colors'] == 'blue': marker.add_to(other_hospitals) # 把特征组加入地图 dayton_hospitals.add_to(m) other_hospitals.add_to(m) # 添加图层控制器,自动生成图例 folium.LayerControl().add_to(m) m.save('hospital_map_with_layer_control.html')
说明:
- 地图右上角会出现图层控制按钮,点击可以切换显示某一类医院的标记。
- 图例就是图层控制器里的选项,不用手动写HTML。
内容的提问来源于stack exchange,提问作者Ashok Kumar
相关产品推荐
相关产品推荐

