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

