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

Plotly地图可视化MMA选手国家分布时美国无颜色如何修复

问题修复方案

导致美国区域无颜色的核心原因有两类,可按以下步骤排查修复:

1. 优先排查国家名称匹配问题

你配置了locationmode = 'country names',Plotly要求传入的locations参数值必须和内置标准国家名称完全匹配,名称不匹配会导致区域无法识别、无法渲染颜色:

  • 检查你的index列表中美国的名称是否为United States,如果是USA、America、中文美国这类非标准名称都会匹配失败
  • 可临时加一行代码验证匹配结果:print([c for c in index if 'United' in c or 'USA' in c]),确认美国的名称是否符合标准

2. 修复颜色映射配置错误

你当前的色阶配置存在两处会导致最大值(美国选手数)显示异常的问题:

  • 自定义colorscale的最大值端点1对应的是浅灰色rgb(220,220,220),和地图背景色非常接近,会看起来像没有上色
  • 关闭自动色阶后未手动设置zmin和zmax,如果美国选手数远高于其他国家,会导致数值和色阶映射错位,搭配reversescale = True的反色逻辑,刚好把最大值映射到接近背景的浅灰色

可直接修改对应配置项:

  • 手动补充z轴范围配置:zmin = 0, zmax = max(values),确保数值范围和色阶完全匹配
  • 把colorscale最大值对应的颜色改为高饱和深色,比如[1,"rgb(172, 10, 5)"]
  • 不需要反色的话直接把reversescale改为False

修复后的完整代码示例

data = [ dict(
    type = 'choropleth',
    locations = index,
    locationmode = 'country names',
    z = values,
    text = index,
    zmin = 0,
    zmax = max(values),
    colorscale = [[0,"rgb(5, 10, 172)"],[0.85,"rgb(40, 60, 190)"],[0.9,"rgb(70, 100, 245)"],
        [0.94,"rgb(90, 120, 245)"],[0.97,"rgb(106, 137, 247)"],[1,"rgb(172, 10, 5)"]],
    autocolorscale = False,
    reversescale = False,
    marker = dict(
        line = dict (
            color = 'rgb(180,180,180)',
            width = 0.5
        ) ),
    colorbar = dict(
        autotick = False,
        tickprefix = '',
        title = 'Countries Of Fighters'),
  ) ]
layout = dict(
        title = 'Countries Of Fighters',
        geo = dict(
             showframe = False,
             showcoastlines = True,
             projection = dict(
             type = 'Mercator'
    )
)
)
fig = dict( data=data, layout=layout )
py.iplot( fig, validate=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:09:01