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

如何在Plotly地图中为无数据的州设置灰色显示?

解决Plotly地图无数据州显示灰色的方案

核心思路

通过自定义Plotly的颜色映射规则,将值为-1的无数据州单独映射为灰色,同时保留有数据州的正常颜色展示逻辑。

具体实现方法

方法1:自定义连续颜色刻度

适用于数据为连续数值的场景,直接在颜色刻度中指定-1对应灰色,有效数据使用正常色系:

import plotly.express as px
import pandas as pd

# 读取处理后的CSV文件
df = pd.read_csv('your_data_file.csv')

# 自定义颜色刻度:-1对应灰色,有效数据使用蓝红渐变
custom_colorscale = [
    [0, 'gray'],
    [0.001, 'rgb(100, 149, 237)'],
    [1, 'rgb(220, 20, 60)']
]

fig = px.choropleth(
    df,
    locations='state',  # 替换为你的州名列名称
    locationmode='USA-states',
    color='value',      # 替换为你的数据列名称
    scope='usa',
    colorscale=custom_colorscale,
    cmin=0,             # 忽略-1,让有效数据从0开始映射颜色
    colorbar=dict(title='数据值')
)

fig.show()

方法2:离散+连续颜色混合映射

先标记数据状态,再单独给无数据州设置灰色,有效数据保留连续色系:

import plotly.express as px
import pandas as pd

df = pd.read_csv('your_data_file.csv')
# 添加状态列区分有无数据
df['status'] = df['value'].apply(lambda x: '无数据' if x == -1 else '有数据')

fig = px.choropleth(
    df,
    locations='state',
    locationmode='USA-states',
    color='value',
    scope='usa',
    color_discrete_map={'无数据': 'gray'},
    color_continuous_scale=px.colors.sequential.Purples
)

fig.show()

注意事项

  • 确保locationmode参数与你的州名格式匹配(美国州地图用USA-states)。
  • 方法1中cmin需设为有效数据的最小值,避免-1干扰正常颜色映射。
  • 可根据需求替换示例中的色系,比如把rgb(100,149,237)换成你需要的起始颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:46:19