如何让Seaborn默认调色板仅保留指定聚类颜色,其余全部置灰
Seaborn散点图保留指定聚类默认配色的实现方案
你可以通过预先获取Seaborn默认分配给每个聚类的颜色映射,仅将非目标聚类的颜色替换为灰色,即可在不改变目标聚类原生配色的前提下满足需求,具体实现代码如下:
import seaborn as sns # 按升序排列所有聚类取值,与Seaborn默认的hue排序规则保持一致 all_clusters = sorted(df_opentsne['cluster'].unique()) # 获取和聚类数量匹配的Seaborn默认调色板 default_palette = sns.color_palette(n_colors=len(all_clusters)) # 建立聚类取值到对应默认颜色的映射 cluster_default_color = dict(zip(all_clusters, default_palette)) # 定义需要保留原生配色的目标聚类 target_cluster = 14 # 构造自定义调色板:目标聚类用默认色,其余聚类统一设为深灰 custom_palette = { cluster: cluster_default_color[cluster] if cluster == target_cluster else 'darkgrey' for cluster in all_clusters } # 绘图时传入自定义调色板即可 sns.scatterplot( x='X', y='Y', hue='cluster', style='cluster', data=df_opentsne, legend=None, palette=custom_palette )
实现说明
Seaborn对hue参数分配颜色时,会自动对hue的取值做升序排序,再按顺序匹配默认调色板的颜色。因此我们提前对聚类取值排序后生成的颜色映射,和原生绘图的配色完全一致,仅修改非目标聚类的颜色即可实现需求,不会改变目标聚类的原有默认配色。
内容的提问来源于stack exchange,提问作者David Hernandez
相关产品推荐
相关产品推荐

