python - 如何在 folium 中添加两个 choropleth 层并让它们像一个特征组一样工作?
问题描述
我创建了两个等值线图层,并将它们添加到 folium 中的地图中。但是,我不喜欢图层的功能。首先,即使未选择图层,也会显示两个图例。其次,您必须手动取消选中复选框以单独查看第二个等值线图层。
我希望图例仅在选择其 choropleth 图层时显示,并且还允许一次选择一个 choropleth 图层并且不允许任何重叠。
我查看了文档,发现我认为可行的方法是将 choropleth 图层添加到 afolium.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.')
解决方案
推荐阅读
- python - 从教程复制的代码的“语法错误:无效语法”用于 tensorflow 急切执行
- dart - 为什么传递 BuildContext 会说该上下文中没有 Scaffold?
- java - Java - 读取控制台未提交的字符
- android - permission does not exist in manifest, but exists in app info
- python - 在 Python 中使用分而治之的矩阵乘法
- java - 使用java将Bitbucket存储库克隆到本地目录?
- entity-framework - 什么决定实体框架 DbMigration 操作顺序?
- amazon-web-services - AWS 代码构建失败
- sql-server - 基于动态排序参数和方向对该表进行排序的任何更简单的方法?
- architecture - 在设计从 SaaS 到本地软件的通信时需要帮助