FeatureGroup/Layers 中的 Folium Choropleth 地图:缺少比例?

问题描述 投票:0回答:0

关于使用不同组/层的等值线图创建 Folium 地图的几个问题。

1。我怎样才能显示比例/图例?

我可以让 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)

2。为什么我在将等值线添加到图层时需要
geojson

对于独立的等值线图,我使用上面的代码,但在

folium.Choropleth()
语句的末尾,它被添加到地图中:

folium.Choropleth().add_to(m)

将等值线添加到图层时,我得到

AssertionError:必须将 Choropleth 添加到 Map 对象中。

通过插入

geojson
,我可以将它添加到层中而不会出错。所以在上面的代码中:

folium.Choropleth().geojson.add_to(m)

这里发生了什么?

3。添加其他数据

在独立的 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 数据的方式有关,但我不明白它在做什么。

感谢您的任何建议! 亚当

python folium choropleth
© www.soinside.com 2019 - 2024. All rights reserved.