关于使用不同组/层的等值线图创建 Folium 地图的几个问题。
我可以让 Folium 单独制作等值线图;他们总是包括比例和图例。
我还想出了如何将它们分组到要素组中,这样我就可以在一张地图上显示不同的图层(参见下面的代码)。
但是当我这样做时,比例/图例消失了。这使得地图更难理解!有没有办法解决这个问题并恢复比例/图例?
m = folium.Map(location=[40, -96],tiles = None)
for group in groups:
layer = folium.FeatureGroup(name = group, overlay = False).add_to(m)
cp = folium.Choropleth(
geo_data = counties,
data = map_df,
columns = ['FIPS','ScaleTotPop'],
key_on = 'feature.properties.FIPS',
bins = 9,
fill_color='OrRd',
fill_opacity=0.8,
line_opacity=0.2,
nan_fill_color = 'grey',
legend_name='Percent of county population'
).geojson.add_to(layer) # <- WHY geojson here?
folium.TileLayer('OpenStreetMap',overlay=True,control = False).add_to(m)
folium.LayerControl().add_to(m)
geojson
?对于独立的等值线图,我使用上面的代码,但在
folium.Choropleth()
语句的末尾,它被添加到地图中:
folium.Choropleth().add_to(m)
将等值线添加到图层时,我得到
AssertionError:必须将 Choropleth 添加到 Map 对象中。
通过插入
geojson
,我可以将它添加到层中而不会出错。所以在上面的代码中:
folium.Choropleth().geojson.add_to(m)
这里发生了什么?
在独立的 choropleth 地图中,我经常通过遍历
cp.geojson.data['features']
来添加工具提示数据。
map_data_lookup = map_df.set_index('FIPS')
for row in cp.geojson.data['features']:
try:
row['properties']['PctTotPop'] = f"{(map_data_lookup.loc[row['properties']['FIPS'],'PctTotPop']):.2f}%"
except KeyError:
row['properties']['PctTotPop'] = 'No adherents'
folium.GeoJsonTooltip(['NAME','PctTotPop'],aliases=['County:','Pop in Cong:']).add_to(cp.geojson)
但是当我在图层图中尝试这个时,我得到一个
AttributeError: GeoJson object has no attribute 'geojson'.
我怀疑所有这三个问题都与 Folium 在 choropleth 叠加层中操纵 GeoJson 数据的方式有关,但我不明白它在做什么。
感谢您的任何建议! 亚当