Plotly:ISO-3代码对应的有效国家名称列表

4
在Python中,我正在绘制一张分级色地图,用于展示非洲某些国家的数据:
countries = ['BDI', 'BEN', 'BFA', 'BWA', 'CIV', 'CMR', 'COD', 'CPV', 'ETH', 'GHA', 'GIN', 'GMB', 'KEN', 'LBR', 'LSO', 'MDG', 'MLI', 'MOZ', 'MUS', 'MWI', 'NER', 'NGA', 'RWA', 'SEN', 'SLE', 'SOM', 'STP', 'TCD', 'TGO', 'TZA', 'UGA', 'ZAF', 'ZMB', 'ZWE']
z = [5, 6, 1, 1, 2, 14, 7, 1, 3, 6, 1, 2, 13, 1, 3, 11, 4, 2, 1, 6, 1, 50, 18, 5, 2, 4, 1, 1, 4, 16, 15, 4, 10, 4]

将这些数据绘制成如下图所示:

import plotly.offline as py
import plotly.graph_objs as go

countries = ['BDI', 'BEN', 'BFA', 'BWA', 'CIV', 'CMR', 'COD', 'CPV', 'ETH', 'GHA', 'GIN', 'GMB', 'KEN', 'LBR', 'LSO', 'MDG', 'MLI', 'MOZ', 'MUS', 'MWI', 'NER', 'NGA', 'RWA', 'SEN', 'SLE', 'SOM', 'STP', 'TCD', 'TGO', 'TZA', 'UGA', 'ZAF', 'ZMB', 'ZWE']
z = [5, 6, 1, 1, 2, 14, 7, 1, 3, 6, 1, 2, 13, 1, 3, 11, 4, 2, 1, 6, 1, 50, 18, 5, 2, 4, 1, 1, 4, 16, 15, 4, 10, 4]

layout = dict(geo={'scope': 'africa'})
data = dict(
    type='choropleth',
    locations=countries,
    locationmode='ISO-3',
    colorscale='Viridis',
    z=z)
map = go.Figure(data=[data], layout=layout)
py.plot(map)

输出是一个交互式地图,当你悬停在上面时,会显示z值和ISO-3代码。

预期输出:我希望显示国家名称而不是ISO-3代码。我认为可以通过将国家名称作为locations传递并将locationmode设置为'country names'来实现这一点。

针对此目的,是否有ISO到国家名称的映射?例如,在plotly配置中,是否有相应值的list/dict/DataFrame?我已经查看了,但没有找到任何信息。

谢谢


请参考此答案了解详细信息。由于它具有固定值,目前还不支持此功能。 - Akash senta
谢谢你的回答,Akash,但那并没有真正回答我的问题。我想知道的是如何将ISO-3代码映射到一个国家名称,以便于plotly识别,如果locationmode设置为“国家名称”。我猜想有一组有效的国家名称列表?谢谢。 - Chris Browne
1个回答

2
我们通过参考三个字母缩写的两个字母缩写来转换国家名称。数据引用网站如下:

国家ISO代码 -> 国家名称

c_names = []
for c in countries:
    for c2,c3 in iso3.items():
        if c3 == c:
            for v2,v3 in names.items():
                if c2 == v2:
                    c_names.append(v3)

c_names
['Burundi',
 'Benin',
 'Burkina Faso',
 'Botswana',
 'Ivory Coast',
 'Cameroon',
 'Democratic Republic of the Congo',
 'Cape Verde',
 'Ethiopia',
 'Ghana',
 'Guinea',
 'Gambia',
 'Kenya',
 'Liberia',
 'Lesotho',
 'Madagascar',
 'Mali',
 'Mozambique',
 'Mauritius',
 'Malawi',
 'Niger',
 'Nigeria',
 'Rwanda',
 'Senegal',
 'Sierra Leone',
 'Somalia',
 'Sao Tome and Principe',
 'Chad',
 'Togo',
 'Tanzania',
 'Uganda',
 'South Africa',
 'Zambia',
 'Zimbabwe']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接