首页 > 解决方案 > 带叶的 Choropleth

问题描述

我正在尝试使用 folium 创建等值线图。尽管我想创建世界地图,但我使用以下站点作为指南。

https://python-graph-gallery.com/292-choropleth-map-with-folium/

我从这里得到了 JSON 文件:

https://github.com/python-visualization/folium/blob/master/examples/data/world-countries.json

我的“test4”数据是这样的:

    Country_0                   Count_0
0   United States of America    18425
1   United Kingdom              3070
2   France                      2705
3   Canada                      1498
4   Japan                       1493
5   Italy                       1471
6   Germany                     1418
7   Russia                      800
8   India                       783
9   Spain                       601
10  Australia                   506
11  Hong Kong                   468
12  South Korea                 457
13  Sweden                      396
14  Finland                     324
15  China                       300
16  Belgium                     299
17  Denmark                     297
18  Brazil                      262
19  Poland                      245
20  Mexico                      236
21  Netherlands                 226
22  Argentina                   211
23  Czech Republic              163
24  Austria                     151
25  Ireland                     135
26  Turkey                      134
27  Greece                      131
28  Norway                      124
29  Hungary                     119
30  Switzerland                 99

我的代码在这里:

import folium
country_count = pd.read_csv('test4.csv')

country_geo = os.path.join('world-countries.json')

m = folium.Map(location=[0, 0], zoom_start=2)
m.choropleth(
 geo_data=country_geo,
 name='choropleth',
 data=country_count,
 columns=['Country_0', 'Count_0'],
 key_on='feature.id',
 fill_color='YlGn',
 fill_opacity=0.7,
 line_opacity=0.2,
 legend_name='Test'
)
folium.LayerControl().add_to(m)

我收到以下错误:

JSONDecodeError: Expecting value: line 7 column 1 (char 6)

标签: pythonchoroplethfolium

解决方案


这是json文件。我假设您只是右键单击并从https://github.com/python-visualization/folium/tree/master/examples/data执行了“将链接另存为...”

返回https://github.com/python-visualization/folium/blob/master/examples/data/world-countries.json

单击Raw选项卡,然后当它出现时,您可以右键单击然后“另存为..”

我还要注意,您需要稍微更改您的代码。如果您查看 json 文件,您会看到存储的国家/地区:

在此处输入图像描述

这与他们使用美国国家 json 给出的示例不同,后者具有功能和 id 下的状态。

所以请注意这里是功能、属性、名称赋予国家价值。所以,为key_on属性调整它:

import pandas as pd
import os
import folium

country_count = pd.read_csv('test4.csv')

country_geo = os.path.join('world-countries.json')

m = folium.Map(location=[0, 0], zoom_start=2)
m.choropleth(
 geo_data=country_geo,
 name='choropleth',
 data=country_count,
 columns=['Country_0', 'Count_0'],
 key_on='feature.properties.name',
 fill_color='YlGn',
 fill_opacity=0.7,
 line_opacity=0.2,
 legend_name='Test'
)
folium.LayerControl().add_to(m)

m.save('#292_folium_chloropleth_country.html')

推荐阅读