繁体   English   中英

为备用标签更改 Seaborn 热图 Y-ticklabels 字体颜色

[英]Change Seaborn heatmap Y-ticklabels font color for alternate labels

我有一个 seaborn 热图,在 Y 轴上有 100 多个标签。 我想以交替方式将 Y 标签的字体颜色更改为红色和蓝色。 如果我有 10 个 Y 标签,那么 5 个标签应该有蓝色字体,5 个标签应该有红色字体。

请帮助

您可以使用ax.ticklabel.font()来实现这一点。 您甚至可以使用字体轻松区分邻居。 这里给出了一个示例代码。

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
for i, tick_label in enumerate(ax.axes.get_yticklabels()):
    if i%2:
        tick_label.set_color("blue")
        tick_label.set_fontsize("15")
    else:
        tick_label.set_color("red")
        tick_label.set_fontsize("10")

Output 在此处输入图像描述

虽然按照@Redox 的建议进行枚举是必要的,但您需要一个灵活的解决方案,以防您的 label 是一个字符串,这在热图中很常见。 有关更多信息,请参阅[matplotlib documentation][1] 感谢@gasvom 的回答[here][1]的启发。

所以我会这样执行:


    import numpy as np; 
    import seaborn as sns; 
    uniform_data = np.random.rand(10, 12)
    ax = sns.heatmap(uniform_data)
    for i, tick_label in enumerate(ax.axes.get_yticklabels()):
        if tick_label.get_text()=="a string of your choice":
            tick_label.set_color("blue")
            tick_label.set_fontsize("15")
        else:
            tick_label.set_color("red")
            tick_label.set_fontsize("10")

暂无
暂无

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

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