Я создал два слоя хлороплетов, которые я добавил на карту в фолио.Однако мне не нравится функциональность слоев.Во-первых, обе легенды отображаются, даже если слой не выбран.Во-вторых, вы должны вручную снять флажок, чтобы просмотреть второй слой хороплета самостоятельно.
Мне бы хотелось, чтобы легенда отображалась только при выборе слоя хлороплетов, а также позволяла выбирать один слой хороплетов за раз и не допускать перекрытия.
Я просмотрел документацию и нашел то, что, по моему мнению, сработало бы, добавив слой хлороплета в folium.FeatureGroup()
, который я затем добавил бы на карту, но, к сожалению, по некоторым причинам слои хороплета вернут ошибку, когдадобавлен в группу объектов.
Далее я наткнулся на параметр наложения для слоев хороплета.Когда 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.')