如何使用 mapbox 和 plotly 在国家级别创建等值线图?
How to create a choropleth map using mapbox and plotly at a country level?
我正在尝试使用类似于美国地图的 plotly 和 mapbox 创建等值线图
https://plot.ly/python/mapbox-county-choropleth/ 但非洲国家。我是 Python 和编码期的新手,所以我有点迷茫。我的地理数据 json 没有像 Plotly 示例那样的 'id' 字段。我需要创建一个吗?还是我只需要按国家/地区按 df 编制索引?但是我该如何匹配 json 文件中的实例呢?任何帮助将不胜感激
with open('custom.geo.json') as response:
africa_geo = json.load(response)
data=pd.read_csv('africa_project.csv')
africa_geo['features'][0]
{'type': 'Feature',
'properties': {'scalerank': 0,
'featurecla': 'Admin-0 country',
'labelrank': 3,
'sovereignt': 'Burkina Faso',
'sov_a3': 'BFA',
'adm0_dif': 0,
'level': 2,
'type': 'Sovereign country',
'admin': 'Burkina Faso',
'adm0_a3': 'BFA',
'geou_dif': 0,
'geounit': 'Burkina Faso',
'gu_a3': 'BFA',
'su_dif': 0,
'subunit': 'Burkina Faso',
'su_a3': 'BFA',
'brk_diff': 0,
'name': 'Burkina Faso',
'name_long': 'Burkina Faso',
'brk_a3': 'BFA',
'brk_name': 'Burkina Faso',
'brk_group': None,
'abbrev': 'B.F.',
'postal': 'BF',
'formal_en': 'Burkina Faso',
'formal_fr': None,
'note_adm0': None,
'note_brk': None,
'name_sort': 'Burkina Faso',
'name_alt': None,
'mapcolor7': 2,
'mapcolor8': 1,
'mapcolor9': 5,
'mapcolor13': 11,
'pop_est': 15746232,
'gdp_md_est': 17820,
'pop_year': -99,
'lastcensus': 2006,
'gdp_year': -99,
'economy': '7. Least developed region',
'income_grp': '5. Low income',
'wikipedia': -99,
'fips_10_': 'UV',
'iso_a2': 'BF',
'iso_a3': 'BFA',
'iso_n3': '854',
'un_a3': '854',
'wb_a2': 'BF',
'wb_a3': 'BFA',
'woe_id': 23424978,
'woe_id_eh': 23424978,
'woe_note': 'Exact WOE match as country',
'adm0_a3_is': 'BFA',
'adm0_a3_us': 'BFA',
'adm0_a3_un': -99,
'adm0_a3_wb': -99,
'continent': 'Africa',
'region_un': 'Africa',
'subregion': 'Western Africa',
'region_wb': 'Sub-Saharan Africa',
'name_len': 12,
'long_len': 12,
'abbrev_len': 4,
'tiny': -99,
'homepart': 1,
'filename': 'BFA.geojson'},
'geometry': {'type': 'Polygon',
'coordinates': [[[-0.3976712649999, 15.002134501000072],
[-0.361471923999943, 15.017740784000113],
[-0.29917598499992, 15.054741110000064],
[-0.236699177999867, 15.065618999000035],
[-0.166987670999902, 15.049676819000098],
[-0.033404092999916, 14.995933329000096],
[-0.033197387999962, 14.995933329000096],
[0.218466838000012, 14.910977275000109],
[0.22084395400006, 14.888213806000126],
[0.211852254000121, 14.874803772000078],
...]]}}
fig = go.Figure(go.Choroplethmapbox(geojson=africa_geo, locations=data.country_name, z=data.ranking,
colorscale="Viridis"))
fig.update_layout(mapbox_style="dark", mapbox_accesstoken=token,
mapbox_zoom=1, mapbox_center = {"lat": 6.6111, "lon": 20.9394})
fig.show()
原来那个键有 "id",一个叫做 "id" 的唯一标识符。如果您的 geo.json 没有它,它将无法工作。然后,您必须将国家与唯一 ID 相关联,并确保您的 'locations' 设置为等于 df.id
我正在尝试使用类似于美国地图的 plotly 和 mapbox 创建等值线图 https://plot.ly/python/mapbox-county-choropleth/ 但非洲国家。我是 Python 和编码期的新手,所以我有点迷茫。我的地理数据 json 没有像 Plotly 示例那样的 'id' 字段。我需要创建一个吗?还是我只需要按国家/地区按 df 编制索引?但是我该如何匹配 json 文件中的实例呢?任何帮助将不胜感激
with open('custom.geo.json') as response:
africa_geo = json.load(response)
data=pd.read_csv('africa_project.csv')
africa_geo['features'][0]
{'type': 'Feature',
'properties': {'scalerank': 0,
'featurecla': 'Admin-0 country',
'labelrank': 3,
'sovereignt': 'Burkina Faso',
'sov_a3': 'BFA',
'adm0_dif': 0,
'level': 2,
'type': 'Sovereign country',
'admin': 'Burkina Faso',
'adm0_a3': 'BFA',
'geou_dif': 0,
'geounit': 'Burkina Faso',
'gu_a3': 'BFA',
'su_dif': 0,
'subunit': 'Burkina Faso',
'su_a3': 'BFA',
'brk_diff': 0,
'name': 'Burkina Faso',
'name_long': 'Burkina Faso',
'brk_a3': 'BFA',
'brk_name': 'Burkina Faso',
'brk_group': None,
'abbrev': 'B.F.',
'postal': 'BF',
'formal_en': 'Burkina Faso',
'formal_fr': None,
'note_adm0': None,
'note_brk': None,
'name_sort': 'Burkina Faso',
'name_alt': None,
'mapcolor7': 2,
'mapcolor8': 1,
'mapcolor9': 5,
'mapcolor13': 11,
'pop_est': 15746232,
'gdp_md_est': 17820,
'pop_year': -99,
'lastcensus': 2006,
'gdp_year': -99,
'economy': '7. Least developed region',
'income_grp': '5. Low income',
'wikipedia': -99,
'fips_10_': 'UV',
'iso_a2': 'BF',
'iso_a3': 'BFA',
'iso_n3': '854',
'un_a3': '854',
'wb_a2': 'BF',
'wb_a3': 'BFA',
'woe_id': 23424978,
'woe_id_eh': 23424978,
'woe_note': 'Exact WOE match as country',
'adm0_a3_is': 'BFA',
'adm0_a3_us': 'BFA',
'adm0_a3_un': -99,
'adm0_a3_wb': -99,
'continent': 'Africa',
'region_un': 'Africa',
'subregion': 'Western Africa',
'region_wb': 'Sub-Saharan Africa',
'name_len': 12,
'long_len': 12,
'abbrev_len': 4,
'tiny': -99,
'homepart': 1,
'filename': 'BFA.geojson'},
'geometry': {'type': 'Polygon',
'coordinates': [[[-0.3976712649999, 15.002134501000072],
[-0.361471923999943, 15.017740784000113],
[-0.29917598499992, 15.054741110000064],
[-0.236699177999867, 15.065618999000035],
[-0.166987670999902, 15.049676819000098],
[-0.033404092999916, 14.995933329000096],
[-0.033197387999962, 14.995933329000096],
[0.218466838000012, 14.910977275000109],
[0.22084395400006, 14.888213806000126],
[0.211852254000121, 14.874803772000078],
...]]}}
fig = go.Figure(go.Choroplethmapbox(geojson=africa_geo, locations=data.country_name, z=data.ranking,
colorscale="Viridis"))
fig.update_layout(mapbox_style="dark", mapbox_accesstoken=token,
mapbox_zoom=1, mapbox_center = {"lat": 6.6111, "lon": 20.9394})
fig.show()
原来那个键有 "id",一个叫做 "id" 的唯一标识符。如果您的 geo.json 没有它,它将无法工作。然后,您必须将国家与唯一 ID 相关联,并确保您的 'locations' 设置为等于 df.id