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

Jupyter Notebook中Plotly 3D散点图自定义颜色不生效如何解决

问题根因

自定义配色失效是因为数据传入px.scatter_3d的格式不符合Plotly Express的参数要求:

  • 你提前将读入的Pandas DataFrame丢弃Label列后转成了Numpy数组,同时把Label列单独拆为Numpy数组传给color参数
  • 当传入的绘图主数据是无列名的Numpy数组、分类color参数也是独立Numpy数组时,Plotly无法正确建立分类值和自定义色序的映射关系,会直接跳过color_discrete_sequence配置,加载默认内置配色。

当前默认配色效果:
默认配色效果

修复方法

不要提前把DataFrame转成Numpy数组,直接基于原始DataFrame传入绘图函数,x/y/z/color参数均通过列名引用DataFrame字段即可,自定义配色会正常生效。
修正后可直接运行的代码:

import pandas as pd
import plotly.express as px

# 读取数据,保留DataFrame结构,不要提前drop列、不要转.values为Numpy数组
df = pd.read_csv('SamplePlotlyData.csv')

fig = px.scatter_3d(
    df,
    x='36',          # 对应第一主成分列,如果你提前重命名了列直接替换为'PCA-1'即可
    y='37',          # 对应第二主成分列,可替换为'PCA-2'
    z='38',          # 对应第三主成分列,可替换为'PCA-3'
    labels={'36':'PCA-1', '37':'PCA-2', '38':'PCA-3'},  # 坐标轴显示名称映射
    color='Label',   # 直接引用DataFrame中的分类标签列
    color_discrete_sequence=["blue", "goldenrod", "magenta"],
    title='3d Plot of Top 3 PCA components'
)
fig.show()

如果你需要给每个类别绑定固定颜色,避免分类顺序变化导致颜色错位,可以把color_discrete_sequence替换为color_discrete_map参数,显式指定类别和颜色的对应关系:

color_discrete_map={
    0: "blue",
    1: "goldenrod",
    2: "magenta"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:28:04