gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:16 25 4
gpt4 key购买 nike

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

所以对于 seaborn Iris example ,可以根据物种设置行颜色并绘制聚类图:

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)

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

g.ax_heatmap.yaxis.get_majorticklabels()

有没有办法根据 row_colors 使用它来重新着色 ytick 标签?

最佳答案

在进一步查看之后,我在尝试做同样的事情时发现了这个问题 this answer @tom 让我走上了自定义刻度标签的轨道。

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

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

在 Iris 数据集的特定示例中,刻度标签文本是 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])

Iris dataset clustermap with colored ticks in the y axis

您会注意到树状图的颜色和 y 轴刻度标签(例如 97 和 114)有些“不匹配”,这是由于图的大小所致。使用 figsize 增加大小可以让您发现隐藏的刻度。 enter image description here

关于python - 更改 seaborn.clustermap 中 ytick 标签的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47292737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com