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

