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

如何为Matplotlib聚类散点图设置高对比度颜色

150个聚类散点图的高区分度配色与优化方案

针对150个聚类的散点图区分难题,可通过以下几种方式提升可视化效果:

一、使用感知均匀的高对比度配色映射

Matplotlib内置了多款适合大量类别的感知均匀colormap,这类配色能确保相邻类别颜色差异明显,且视觉上不会出现亮度突变,适配150个聚类的场景:

  • 优先选择viridis、plasma、inferno、magma、cividis这类官方推荐的连续配色,颜色过渡自然且区分度高
  • 也可使用nipy_spectral这类颜色跨度大的离散感配色

修改代码示例:

plt.figure(figsize=(22, 25), dpi = 80)
# 加入cmap参数指定配色,同时添加颜色条对应类别编号
scatter = plt.scatter(reduced_features[:, 0], reduced_features[:,1], 
                      c = kmeans.predict(vec_matrix_pca), s = 10, 
                      cmap='viridis')
plt.scatter(reduced_cluster_centers[:, 0], reduced_cluster_centers[:, 1], 
            marker = 'X', s = 150, c = 'k')  # 改用黑色粗X标记聚类中心,更突出
plt.grid()
plt.colorbar(scatter, ticks=range(150))  # 添加颜色条,方便对应聚类编号
plt.show()

二、生成自定义高对比度离散配色

如果内置配色不够满足需求,可通过Seaborn生成指定数量的高对比度离散颜色:

import seaborn as sns

plt.figure(figsize=(22, 25), dpi = 80)
# 生成150个husl色系的高对比度颜色
custom_cmap = sns.color_palette("husl", 150)
scatter = plt.scatter(reduced_features[:, 0], reduced_features[:,1], 
                      c = kmeans.predict(vec_matrix_pca), s = 10, 
                      cmap=custom_cmap)
plt.scatter(reduced_cluster_centers[:, 0], reduced_cluster_centers[:, 1], 
            marker = 'X', s = 150, c = 'k')
plt.grid()
plt.colorbar(scatter, ticks=range(150))
plt.show()

三、辅助优化手段

  • 适当增大散点大小:将s=7调整为s=10~15,避免点过小导致颜色混叠
  • 调整网格透明度:使用plt.grid(alpha=0.3)降低网格对散点的干扰
  • 若聚类存在重叠严重的情况,可尝试调整散点的透明度alpha=0.7,既保留重叠区域的视觉提示,又能区分不同聚类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:00:41