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

如何解决sns.heatmap子图自定义刻度标签与默认标签重叠问题

解决Seaborn Heatmap子图自定义标签重叠问题

嘿,这个标签重叠的问题我太熟啦!你看,你先用plt.subplots()创建了三个子图的轴对象ax1、ax2、ax3,但之后又调用fig.add_subplot()重新添加了一遍子图——这就相当于在同一个位置叠了两层轴,默认标签和自定义标签自然就撞在一起啦!

解决步骤

  • 直接使用plt.subplots()返回的轴对象,不要再重复调用fig.add_subplot()
  • 用Seaborn绘图时通过ax参数指定要绘制的子图轴
  • 可选:调整标签旋转角度、自动调整子图间距优化显示

修改后的完整代码

import seaborn as sns
import matplotlib.pyplot as plt

# 加载并处理数据
glue = sns.load_dataset("glue").pivot("Model", "Task", "Score")

# 定义各个子图的自定义标签
xlabels1 = ['a','b','c','d','e','f','g','h']
ylabels1 = ['AA','BB','CC','DD','EE','FF','GG','HH']

xlabels2 = ['p','q','r','s','t','u','v','z']
ylabels2 = ['PP','QQ','RR','SS','TT','UU','VV','ZZ']

xlabels3 = ['10','20','30','40','50','60','70','80']
ylabels3 = ['11','21','31','41','51','61','71','81']

# 创建子图,直接获取返回的轴对象
fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(24,8))

# 给第一个子图绘制热图,指定ax参数
sns.heatmap(glue, annot=True, cmap='Reds', cbar=False, 
            linewidths=0.2, linecolor='white',
            xticklabels=xlabels1, yticklabels=ylabels1, ax=ax1)
# 调整x轴标签角度,避免拥挤
ax1.set_xticklabels(ax1.get_xticklabels(), rotation=45)

# 第二个子图同理
sns.heatmap(glue, annot=True, cmap='Blues', cbar=False, 
            linewidths=0.2, linecolor='white',
            xticklabels=xlabels2, yticklabels=ylabels2, ax=ax2)
ax2.set_xticklabels(ax2.get_xticklabels(), rotation=45)

# 第三个子图同理
sns.heatmap(glue, annot=True, cmap='Greens', cbar=False, 
            linewidths=0.2, linecolor='white',
            xticklabels=xlabels3, yticklabels=ylabels3, ax=ax3)
ax3.set_xticklabels(ax3.get_xticklabels(), rotation=45)

# 自动调整子图间距,让布局更美观
plt.tight_layout()
plt.show()

关键改动说明

  1. 移除重复的fig.add_subplot():现在每个子图只有一个轴对象,自定义标签会直接替换默认标签,不会出现叠加
  2. 指定ax参数:这是Seaborn在子图中绘图的标准方式,确保热图绘制到正确的轴上
  3. plt.tight_layout():自动调整子图之间的间距,避免标签和子图边缘重叠
  4. 标签旋转:把x轴标签旋转45度,防止横向标签过于拥挤影响可读性

这样修改后,你就会看到自定义标签正常显示,再也不会和默认标签重叠啦!

内容的提问来源于stack exchange,提问作者volkan g

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:25:44