You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

验证步骤

  1. 优先添加locationmode='ISO-2',这是解决空白问题的核心,先测试这一步能不能解决问题。
  2. 如果还是有异常,再过滤NaN值,排除无效数据的影响。
  3. 最后调整投影类型,找到适合你需求的显示效果。

内容的提问来源于stack exchange,提问作者user9807244

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:06:15