TL;DR - 当我执行 px.choropleth() 函数时,它只是给了我一张亚洲的大地图。没有一个国家被涂上颜色。出了什么问题?
更详细地说:
我从一个包含世界上所有国家的 GDP 的 csv 文件和一个包含亚洲所有国家的 geojson 文件开始。我使用 pandas 从 csv 文件中对东盟国家的数据进行子集处理没有问题。
我的第一个挑战是弄清楚如何从 geojson 文件中删除所有非东盟国家。我了解了一个名为 geopandas 的包,并将其用于对东盟国家进行子集化,然后将 geopandas 数据框转换回 geojson 文件,以用于 plotly express choropleth 函数。我怀疑我使用 geopandas 进行子集化的方式可能是问题的根源,但我不确定。
以下是我的子集数据框(用于 GDP 值)的外观:
Country Year Value code
11390 Brunei 2018 1.356691e+10 BRN
13585 Cambodia 2018 2.457175e+10 KHM
37026 Indonesia 2018 1.042173e+12 IDN
我的理解是,geojson 文件需要具有与数据框中的国家相对应的每个国家的 ID。因此,当我使用 geopandas 对 geojson 文件进行子集时,我直接从我的 csv 数据框中附加了一个新的“代码”列。我检查了一下,它似乎确实有效。我将 geopandas 数据框制作成 geojson 文件,剩下的国家只有东盟国家,每个国家在其属性中都有正确的代码(“BRN”、“KHM”等)。我将这个子集 geojson 文件命名为“asean.json”。
我尝试使用此代码填充 plotly choropleth 函数中的位置参数。它没有用。
这是我的情节功能:
path_to_file = 'asean.json'
with open(path_to_file) as f:
aseangeo = geojson.load(f)
fig = px.choropleth(data_frame=asean10,
geojson=aseangeo,
locations='code',
color='Value',
# color_continuous_scale="Viridis",
range_color=(0, 12))
fig.show()
结果令人失望,我得到的只是一张整个亚洲大陆的大地图,没有一个国家填写。
就像我之前说的,我怀疑这可能是我使用 geopandas 子集 geojson 文件的方式,但我不确定。什么地方出了错?