【问题标题】:Choropleth map using folium and pandas使用 folium 和 pandas 的 Choropleth 地图
【发布时间】:2016-04-13 15:27:13
【问题描述】:

我正在使用folium 创建一组国家的等值线地图。我正在关注documentation。然而。由于某种原因,地图没有显示任何阴影。我正在使用来自自然地球的世界 geojson(参见gist)。

我的数据框看起来像:

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

世界geojson的样子:

>>> 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,我只需要保留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]]

【问题讨论】:

  • 这里也一样..你找到解决方案了吗?
  • 嗨,我实际上自己解决了它。今晚将更新要点。最简单的答案是,在 geojson 中,您只需要将那些数据可用的键放在相应的表中
  • 太好了,谢谢 :) 期待看到您的代码!
  • 如果这个库给你带来了麻烦,你可以试试 Plotly。它还支持等值线图和悬停精确数据。
  • @goofd,继续为你自己的问题写一个答案——这样它就可以被关闭了

标签: python choropleth folium


【解决方案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]]

【讨论】:

  • @goofd 我正在查看 Python 标签中未回答的问题,这是最重要的问题。我发现在 2016 年添加的最重要的未回答问题有点愚蠢,所以我查看了 at the meta 并遵循他们的建议,只需将您的答案添加为社区答案。
猜你喜欢
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多