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

Plotly+Python3:为3D散点图各簇分配独特定性颜色的方案求助

解决方案:为Plotly 3D散点图分配唯一定性颜色

你可以通过以下两种方式解决颜色重复、相似的问题:

方法一:使用Plotly内置的多色定性配色序列

Plotly提供了多个包含超过10种颜色的定性配色集,这些颜色经过视觉设计,区分度高,不会出现相似问题。常用的选项包括:

  • px.colors.qualitative.Dark(24种深色系定性色)
  • px.colors.qualitative.Alphabet(26种高区分度颜色)
  • px.colors.qualitative.Light24(24种浅色系定性色)

修改后的代码示例:

fig_tSNE = px.scatter_3d(x=projections[:,0],
                          y=projections[:,1],
                          z=projections[:,2],
                          color=to_be_plotted['Cluster'],
                          color_discrete_sequence=px.colors.qualitative.Dark)

方法二:生成自定义唯一定性颜色

如果你的簇数量超过内置配色集的长度,可以基于HSV色彩空间生成均匀分布的色相颜色,保证每个颜色差异明显:

import plotly.express as px
import numpy as np

# 获取簇的总数
num_clusters = len(to_be_plotted['Cluster'].unique())

# 生成均匀分布的色相颜色
def generate_unique_colors(n):
    # 均匀分配0-360度色相,饱和度70%、亮度50%保证色彩鲜明
    hues = np.linspace(0, 360, n, endpoint=False)
    return [f"hsl({h}, 70%, 50%)" for h in hues]

fig_tSNE = px.scatter_3d(x=projections[:,0],
                          y=projections[:,1],
                          z=projections[:,2],
                          color=to_be_plotted['Cluster'],
                          color_discrete_sequence=generate_unique_colors(num_clusters))

注意:你之前使用的px.colors.sequential.PuBu是连续渐变色阶,本身就是相似的渐变色彩,不适合用于定性分类(簇)的区分,换成定性配色或自定义色相颜色就能从根本解决颜色相似的问题。

内容的提问来源于stack exchange,提问作者Mr.Slow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:37