繁体   English   中英

在seaborn.clustermap中更改ytick标签的颜色

[英]Change the color for ytick labels in seaborn.clustermap

是否可以更改seaborn.clustermap中ytick标签的颜色?

因此,对于seaborn Iris示例 ,可以根据物种设置行颜色并绘制一个clustermap:

import seaborn as sns
iris = sns.load_dataset("iris")
species = iris.pop("species")
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris)

并且可以在绘制的行和行标签之间获得1-1对应关系:

g.ax_heatmap.yaxis.get_majorticklabels()

无论如何使用它来重新着色基于row_colors的ytick标签?

在尝试做同样的事情时我发现了这个问题,在通过@tom进一步查看这个答案后 ,让我按照自定义标记标签。

您需要通过将刻度标签中的文本映射回颜色字典来指定每个单独刻度的颜色。

要访问每个tick,请转到g.ax_heatmap.axes.get_yticklabels() ,然后使用get_text()提取tick的文本。

在Iris数据集的特定示例中,tick标签文本是pandas系列species索引,用于收集species文本,允许您从lut字典中恢复颜色,您需要将索引转换回int并使用.loc提取所需的信息。

iris = sns.load_dataset("iris")
species = iris.pop("species")
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)

for tick_label in g.ax_heatmap.axes.get_yticklabels():
    tick_text = tick_label.get_text()
    species_name = species.loc[int(tick_text)]
    tick_label.set_color(lut[species_name])

在y轴上带有彩色刻度的虹膜数据集簇图

你会注意到树形图和y轴刻度标签的颜色有一些“不匹配”(例如97和114),这是由于图形的大小。 使用figsize增加大小可以让你发现隐藏的刻度。 在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM