如何在大叶中添加两个Choropleth层并使它们像要素组一样工作?

时间:2019-03-16 12:49:30

标签: python folium

我创建了两个Choropleth图层,然后将它们添加到了大叶草的地图中。但是,我不喜欢这些图层的功能。首先,即使未选择图层,也将显示两个图例。其次,您必须手动取消选中该复选框才能单独查看第二个Choropleth层。

我希望图例仅在选择其Choropleth层时显示,并且还允许一次选择一个Choropleth层,并且不允许任何重叠。

我仔细阅读了文档,发现我认为可行的方法是将choropleth层添加到folium.FeatureGroup()中,然后将其添加到地图中,但是不幸的是,由于某些原因,choropleth层在添加时会返回错误进入功能组。

接下来,我碰到了覆盖层参量,用于制作鹅卵石层。将overlay=False添加到choropleth参数后,我得到了一个单选按钮,而不是一个很棒的复选框,但是仍然显示其他图层的图例,并且丢失了地图中的图块。

下面是我的代码。在此问题上的任何帮助将不胜感激。谢谢!

import folium
import pandas as pd
import json

df_theft = pd.read_csv('PA_theft.csv')
df_assualt = pd.read_csv('PA_assualt.csv')

theft_data = json.load(open('theft_geojson.json'))
assualt_data = json.load(open('assualt_geojson.json'))

m = folium.Map(location=[41.20, -77.50], zoom_start=8.3)

theft = folium.Choropleth(
    geo_data=theft_data,
    data=df_theft,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    legend_name='Theft incident rate per 100,000 people',
    highlight=True,
    name='Theft Incidents',
    show=True
).add_to(m)

folium.GeoJson(
    theft_data,
    tooltip=folium.features.GeoJsonTooltip(fields=['county_name', "arrests", "incident_count",
                                                   "incident_total", "population", "rate" ],
                                                   localize=True)
).add_to(theft.geojson)

assualt = folium.Choropleth(
    geo_data=assualt_data,
    data=df_assualt,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='GnBu',
    fill_opacity=0.9,
    legend_name='Assualt incident rate per 100,000 people',
    highlight=True,
    name='Assualt Incidents',
    show=False
).add_to(m)

folium.GeoJson(
    assualt_data,
    tooltip=folium.features.GeoJsonTooltip(fields=['county_name', "arrests", "incident_count",
                                                   "incident_total", "population", "rate" ],
                                                   localize=True)
).add_to(assualt.geojson)

folium.LayerControl(collapsed=False).add_to(m) 
m.save('PA_County_Crime_Map.html')

print('Map created.')

0 个答案:

没有答案