You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Seaborn heatmap Y轴刻度标签交替设置字体颜色

Seaborn热力图Y轴标签交替颜色实现方案

实现逻辑

Seaborn热力图基于Matplotlib轴对象渲染,不需要修改Seaborn内部逻辑,直接获取Y轴刻度标签实例后按索引奇偶性设置颜色即可,支持任意数量的Y轴标签:10个标签场景下会自动实现5蓝5红的交替效果,100+标签也可直接复用逻辑。

操作步骤

  • 调用sns.heatmap()时将返回的轴对象存入变量,不要提前调用plt.show()
  • 通过轴对象的get_yticklabels()方法获取所有Y轴刻度标签的文本实例列表
  • 遍历标签列表,按索引奇偶性分别设置字体颜色:偶数索引设为蓝色、奇数索引设为红色(颜色顺序可按需调整)
  • 调整布局后渲染出图

完整可运行代码

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# 测试数据:10行对应10个Y标签,测试100+标签时将第一维参数改成对应数值即可
data = np.random.rand(10, 6)
y_tick_labels = [f"类别{i+1}" for i in range(data.shape[0])]

fig, ax = plt.subplots(figsize=(7, 5))
# 正常绘制热力图
sns.heatmap(
    data,
    yticklabels=y_tick_labels,
    ax=ax,
    cmap="Blues"
)

# 核心:设置交替颜色
for idx, label in enumerate(ax.get_yticklabels()):
    if idx % 2 == 0:
        label.set_color("blue")
    else:
        label.set_color("red")

# 可选:标签数量超过100时调小Y轴字号避免重叠
# ax.tick_params(axis='y', labelsize=7)

plt.tight_layout()
plt.show()

补充说明

  • 若需要调换红蓝顺序,直接互换判断分支里的颜色参数即可
  • 若Y轴标签是热力图自动生成而非手动传入,上述逻辑完全生效,不需要额外调整
  • 若设置颜色后出现标签截断,调用plt.tight_layout()即可自动适配边距

内容的提问来源于stack exchange,提问作者bharath kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:30:39