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

Seaborn热力图y轴刻度标签被截断,调整后旋转重叠求助

Seaborn热力图y轴长标签问题解决

核心调整方案

针对长y轴标签被截断、调整画布后标签旋转重叠且rotation参数失效的问题,可通过以下代码修改解决:

修改后的完整代码

import seaborn as sns
import matplotlib.pyplot as plt

seasons = ['yearly','djf','mam','jja','son']
# 根据模型数量动态设置画布高度,每个标签分配0.8英寸(可按需调整)
fig_width = 8
fig_height = 0.8 * len(model_list)

for season_index, season in enumerate(seasons):
    # 提前创建画布并指定尺寸
    plt.figure(figsize=(fig_width, fig_height))
    im = sns.heatmap(bias[:, season_index, :],
                     linewidth=0.5,
                     cmap='coolwarm',
                     annot=True,
                     annot_kws={'fontsize':7, 'fontweight':'bold'})
    
    # 设置x轴刻度标签
    im.set_xticklabels(['1','2','3','4','5','6','7','8','9'])
    # 设置y轴刻度标签,调整字体大小避免重叠
    im.set_yticklabels(model_list, fontsize=8)
    # 强制重置y轴标签旋转角度(绕过Seaborn默认行为)
    plt.setp(im.get_yticklabels(), rotation=0)
    # 调整左侧边距,给长标签留出足够显示空间
    plt.subplots_adjust(left=0.3)
    # 保存时添加bbox_inches='tight',确保标签不被截断
    plt.savefig(f"figures/bias/yearly_bias_{season}.png", bbox_inches='tight')
    plt.close()

关键调整说明

  • 动态画布尺寸:根据model_list的长度计算画布高度,避免标签垂直方向重叠
  • 强制旋转控制:使用plt.setp()直接操作y轴标签对象,解决set_yticklabels的rotation参数失效问题
  • 边距与保存优化:通过subplots_adjust预留左侧空间,配合bbox_inches='tight'确保保存的图片完整显示所有标签
  • 字体大小适配:缩小y轴标签字体,进一步缓解长标签的重叠问题

内容的提问来源于stack exchange,提问作者Thomas Kroißenbrunner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:20:53