首页 > 解决方案 > 根据标记颜色过滤叶图

问题描述

我正在映射具有名为“marker_color”的行的标记,这些标记基于其他列值指示“红色”、“黄色”和“绿色”。如何在地图的角落添加过滤器选项,使我只能根据颜色显示一个、两个、全部或不显示任何标记?基本上,三个可点击的单选选项来呈现三个彩色标记。

目前,我正在从我的 sales_colored 数据框中映射所有标记:

basemap2 = generateBaseMap()

for index, row in sales_colored.iterrows():
    folium.Circle([row['Latitude'], row['Longitude']],
                   radius=200, color=row['marker_color'], fill_color=row['marker_color']).add_to(basemap2)

basemap2

标签: pythonpandasleafletgisfolium

解决方案


如果要为每种颜色添加复选框,可以使用folium.FeatureGroup(). 您首先需要收集列中的所有唯一值,sales_colored["marker_color"]然后为每种颜色创建一个 FeatureGroup(我使用一个名为的字典features来存储颜色)。您可以创建这样的代码:

features = {}
for row in pd.unique(sales_colored["marker_color"]):
    features[row] = folium.FeatureGroup(name=row)

for index, row in sales_colored.iterrows():
    circ = folium.Circle([row['Latitude'], row['Longitude']],
                   radius=200, color=row['marker_color'], fill_color=row['marker_color'])
    circ.add_to(features[row['marker_color']])

for row in pd.unique(sales_colored["marker_color"]):
    features[row].add_to(basemap2)

folium.LayerControl().add_to(basemap2)
basemap2

推荐阅读