使用folium和pandas的等值线图

goo*_*ofd 9 python choropleth folium

folium用来创建一组国家的等值区域地图.我正在关注http://folium.readthedocs.org/en/latest/#choropleth-examples上的文档.然而.由于某种原因,地图不显示任何阴影.我正在使用来自天然地球的世界geojson(参见要点).

我的数据框看起来像:

>>> spatial_scores.head()

Out[1]:
id  Country Score
PER Peru    2.810300
HND Honduras    2.734521
GUF French Guiana   2.730886
SLV El Salvador 2.473134
CRI Costa Rica  2.454963
Run Code Online (Sandbox Code Playgroud)

世界geojson看起来像:

>>> world_json['features'][0]['id']

Out [2]:
u'AFG'
Run Code Online (Sandbox Code Playgroud)

等值线代码的相关部分如下:

map1 = folium.Map(location=[-15., -60], zoom_start=4)

map1.geo_json(geo_path=world_json_path,
              data_out='data.json',
              data=spatial_scores,
              columns=['id', 'Score'],
              threshold_scale=[0, 1, 2, 3, 4],
              key_on='features.id',
              fill_color='BuPu', fill_opacity=0.7, line_opacity=0.5,
              legend_name='Score')

map1.create_map('./Scores.html')
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到任何等值的结果,只留下如下的基本国家地图 Chorpleth输出

有什么我做错了吗?

[编辑]

我解决了这个问题.绘制choropleth我需要只保留那些geojson也在我的数据框中的键.

merged = gdf.merge(spatial_scores, left_on='name', right_on='Country')
spatial_gdf = gpd.GeoDataFrame(merged.iloc[:, [0, 1]])
data_df = merged.iloc[:, [2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

U p*_*63A 1

要绘制 choropleth OP,只需将那些也在数据框中的键保留在 geojson 中。

merged = gdf.merge(spatial_scores, left_on='name', right_on='Country')
spatial_gdf = gpd.GeoDataFrame(merged.iloc[:, [0, 1]])
data_df = merged.iloc[:, [2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)