在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代码的交互式地图。
预期输出:I希望显示国家的名称,而不是ISO-3代码。我认为这可以通过传入国家的名称作为locations并将locationmode设置为'country names'来实现。
为此目的,是否有从ISO到国家名称的映射?例如,在list/dict/DataFrame配置中对应的值的plotly?我看过了,但什么也找不到。
谢谢
发布于 2020-06-25 07:19:41
我们从三个字母的缩写中引用了两个字母的缩写来转换国名。引用数据的站点如下
国家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']https://stackoverflow.com/questions/62566605
复制相似问题