我正在使用Folium包通过python建立一个“ Choropleth”地图。显示的数据是从API提取的,该API跟踪每个国家最近的Covid-19感染率。 country.geojson文件(世界地图的json文件)和我提取的数据之间共享的一列是国家的名称。大多数国家(成功地)用颜色阴影,而一些国家不完全相同,因此用灰色阴影,例如,pandas数据框中的“ US”和.geojson文件中的“ United States of America”不匹配,因此不会在地图上显示其数据。
covid_data = requests.get('https://covid2019-api.herokuapp.com/v2/current')
covid_data = covid_data.json()
covid_data = pd.DataFrame.from_dict(covid_data['data'])
location confirmed deaths recovered active
US 636350 28326 52096 555928
Spain 177644 18708 70853 88083
我存储API数据的方式在pandas DataFrame中,因为它与Folium一起使用效果最佳。我从相同的国家/地区名称转换数据的巧妙方式是使用以下代码:covid_data.location[covid_data.location=='US'] = 'United States of America'
通过这样做,.geojson文件和DataFrame上的国家/地区名称现在都相同
location confirmed deaths recovered active
United States of America 636350 28326 52096 555928
Spain 177644 18708 70853 88083
现在与]相同>
{ "type": "Feature", "properties": { "ADMIN": "United States of America", "ISO_A3": "USA"} "geometry": {}} (countries.geojson)
在编辑数据框之前,地图已渲染,但是当美国更改为美利坚合众国时,会引发错误
返回color_range [color_idx],fill_opacityIndexError:列表索引超出范围
因此,我将Choropleth threshold_scale设置为636,360(这是“已确认”列中的最高#),但是没有任何数据可以匹配此#。因此,如果我将threshold_scale降低到下一个最高的数字177,644(这是意大利),则会收到错误
ValueError:所有值都应落入提供的bin之一(或为Nan)。请检查>
bins
参数和/或您的数据。此处提供其余代码以帮助解决此问题,
#this variable is to get the highest value of the rates as the max threshold used for coloring covid_data_max = covid_data['confirmed'].max() covid_data_max = covid_data_max.item() world_geo = r'countries.geojson' world_map = folium.Map(location=[4.68, 8.33], tiles='Mapbox Bright', zoom_start=3) world_map = folium.Choropleth( geo_data=world_geo, name='choropleth', data=covid_data, columns=['location','confirmed'], key_on='properties.ADMIN', threshold_scale = [0,int((covid_data_max/15)),int((covid_data_max/10)),int((covid_data_max/4)),covid_data_max], fill_color='BuPu', fill_opacity=0.7, line_opacity=0.2, legend_name='Number of deaths per country', highlight=True, line_color='black' ).add_to(world_map) folium.LayerControl().add_to(world_map) world_map.save(r'./templates/map.html')
Image of the map (for some reason the threshold includes the USA #'s)
让我知道我还有什么可以提供的!
我正在使用Folium包通过python建立一个“ Choropleth”地图。显示的数据是从API提取的,该API跟踪每个国家最近的Covid-19感染率。 A ...