使用Plotly Express绘制Mapbox地图为空,如何正确展示指定数据
问题原因
plotly的choropleth_mapbox方法默认会用locations传入的值去匹配GeoJSON的id字段,你使用的国家GeoJSON里国家名称存储在properties.name字段,没有做匹配绑定,同时没有指定默认缩放和中心位置,所以看不到渲染内容。
修复方案
- 给
px.choropleth_mapbox添加featureidkey参数,指定GeoJSON中用于匹配国家名的字段路径 - 补充地图默认缩放和中心坐标,确保渲染区域可见
- 可选:检查数据集国家名和GeoJSON中存储的国家名是否完全一致,避免匹配失败
修改后的核心代码如下:
fig = px.choropleth_mapbox( fietsdata, geojson=countries, locations='country', featureidkey="properties.name", # 绑定GeoJSON中的国家名字段 color='total_profit', color_continuous_scale="Viridis", mapbox_style="open-street-map", zoom=1, # 设置默认缩放等级 center={"lat": 25, "lon": 10} # 设置地图初始中心位置 )
如果修改后仍有部分国家不显示,可以先输出GeoJSON中存储的国家名列表,和你的数据集country列值做比对,把不一致的名称统一即可:
# 输出GeoJSON中的所有国家名,用于比对 for feature in countries['features']: print(feature['properties']['name'])
内容的提问来源于stack exchange,提问作者Pim Steijns
相关产品推荐
相关产品推荐

