Choropleth地图无法为国家着色?技术求助
解决Plotly Choropleth地图空白但颜色条正常的问题
我来帮你排查下这个地图空白的问题,大概率是这几个常见原因导致的:
1. 未指定locationmode参数(最核心的问题)
Plotly的Choropleth组件默认用三位ISO国家代码(比如AFG、ALB)匹配地理区域,但你的数据里用的是两位ISO代码(AF、AL)。如果不明确告诉组件用哪种代码格式匹配,它找不到对应的国家区域,自然就会显示空白地图。
解决方法:直接在你的data字典里加上locationmode = 'ISO-2',明确指定用两位ISO代码匹配地理区域。
2. NaN值的干扰
你的数据里有部分国家的Population是NaN(比如Åland Islands),虽然这不会导致整个地图空白,但会让这些国家没有着色。如果想让所有有数据的国家都显示颜色,可以先过滤掉含NaN的行:
df = df.dropna(subset=['Population'])
3. 投影类型的兼容性问题
你当前用的stereographic投影,虽然Plotly支持,但部分投影在显示全球地图时可能会有渲染异常。可以先换成默认的equirectangular投影测试,确认是不是投影的问题:
geo = dict(showframe = False, projection = {'type': 'equirectangular'})
修正后的完整代码
把这些调整整合后,代码应该是这样的:
import plotly.graph_objects as go from plotly.offline import plot # 先过滤掉Population为空的行 df = df.dropna(subset=['Population']) data = dict( type = 'choropleth', locations = df['CountryCode'], locationmode = 'ISO-2', # 关键:指定两位ISO代码匹配 z = df['Population'], text = df['Country'], colorbar = dict(title = 'Population') ) layout = dict( title = '2013 global Population', geo = dict( showframe = False, projection = {'type': 'equirectangular'} ) ) choromap = go.Figure(data = [data], layout = layout) plot(choromap)
验证步骤
- 优先添加
locationmode='ISO-2',这是解决空白问题的核心,先测试这一步能不能解决问题。 - 如果还是有异常,再过滤NaN值,排除无效数据的影响。
- 最后调整投影类型,找到适合你需求的显示效果。
内容的提问来源于stack exchange,提问作者user9807244
相关产品推荐
相关产品推荐

