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

Plotly:如何扩展plotly express散点图的配色方案

Plotly Express 默认内置的离散配色序列最长仅24种,当分类字段的类别总数超过默认色板长度时,会自动从头循环取色,52个类别就会出现不同类颜色重复的问题。

通过color_discrete_sequence参数传入长度为52的不重复配色序列即可解决,以下是两种可直接运行的实现方案:

方案1:采样连续色板生成高区分度52色

从色觉友好、区分度高的连续色板等距采样52个颜色,不会出现相邻类别颜色过近的问题:

import plotly.express as px
import numpy as np

# 从Turbo色板等距取52个不重复颜色,可替换为viridis、plasma等其他官方连续色板
custom_colors = px.colors.sample_colorscale(
    px.colors.sequential.Turbo,
    np.linspace(0, 1, 52)
)

fig = px.scatter(
    x=Xt[:, 0],
    y=Xt[:, 1],
    color=DF["ScientifName"],
    color_discrete_sequence=custom_colors
)
fig.show()

方案2:组合内置定性色板获取纯离散配色

如果不想要带渐变感的配色,可以组合多个内置定性色板凑够52个互不重复的离散色:

import plotly.express as px

# 组合24色亮色系+24色暗色系,截取前52个无重复颜色
custom_colors = (px.colors.qualitative.Light24 + px.colors.qualitative.Dark24)[:52]

fig = px.scatter(
    x=Xt[:, 0],
    y=Xt[:, 1],
    color=DF["ScientifName"],
    color_discrete_sequence=custom_colors
)
fig.show()

你也可以手动传入自定义的十六进制颜色值列表,只要保证列表长度为52、无重复色值,就能实现每个类别对应唯一颜色。

原问题运行效果截图:
运行效果截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:27:17