如何为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
相关产品推荐
相关产品推荐

