Карта Choropleth с использованием фолиума и панд

Я использую folium создать картографическую карту множества стран. Я следую за документацией по адресу http://folium.readthedocs.org/en/latest/. Тем не мение. по какой-то причине карта не показывает никаких оттенков. Я использую мир геойсон из естественной земли (см. Суть).

Мой фрейм данных выглядит так:

>>> 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

Мир геойсон выглядит так:

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

Out [2]:
u'AFG'

Соответствующие части кодов хороплета приведены ниже:

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')

Тем не менее, я не получаю никакого choropleth результата и остался только с базовой картой страны, как показано ниже Выход 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]]

1 ответ

Чтобы построить хороплет OP, нужно было сохранить в геоджсоне только те ключи, которые также были во фрейме данных.

      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]]
Другие вопросы по тегам