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

Plotly分组散点图手动分配颜色代码失效问题求助

问题解决:Plotly color_discrete_map 不生效的修复方案

核心问题排查

你的代码存在两个关键问题,导致手动指定颜色不生效:

  1. DataFrame构造语法错误:Oyl列表元素数量(13个)与Pt/Pl(15个)不匹配,且末尾多余的size=20, replace=True属于无效参数,直接导致DataFrame创建失败。
  2. 潜在数据列缺失:hover_data中指定的H#、FM、O列未在构造的DataFrame中定义,会触发报错。

修复后的完整代码

import pandas as pd
import plotly.express as px

# 1. 构造格式正确的DataFrame,确保各列元素数量一致
df1 = pd.DataFrame({
    'Pt': [22, 55,44,22,19,14,48,53,44,19,6,62,65,6,30],
    'Pl': [38,38,42,40,40,42,74,84,86,102,100, 64,72,80,92],
    'Oyl': [27,21,21,27,27,27,21,21,33,22,22,33,21,27,33],  # 补全至15个元素
    'H#': [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],  # 补充hover所需列
    'FM': ['A','B','C','A','B','C','A','B','C','A','B','C','A','B','C'],
    'O': [10,20,30,40,50,60,70,80,90,100,110,120,130,140,150]
})

# 2. 将Oyl转为字符串类型,确保与color_discrete_map的键匹配
df1["Oyl"] = df1["Oyl"].astype(str)

# 3. 正确配置散点图,color_discrete_map按字符串键映射颜色
fig_ = px.scatter(
    df1, 
    x="Pt", 
    y="Pl", 
    color="Oyl",
    hover_data=['H#', 'FM', 'O'],
    color_discrete_map={
        "21": "#005900",
        "22": "#00FF00",
        "27": "#FF8000",
        "33": "#00FFFF"
    }
)

fig_.show()

关键注意事项

  • 确保color_discrete_map的键与Oyl列的字符串值完全匹配(无空格、大小写一致)。
  • 如果不需要hover_data中的某些列,直接删除对应字段即可,避免因列缺失报错。
  • 若原始数据data_plot存在,可直接基于它处理Oyl列类型,无需重新构造DataFrame,注意保持数据完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:15:57