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
相关产品推荐
相关产品推荐

