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

matplotlib imshow绘制热力图时y轴刻度拥挤如何解决

问题产生原因
  • imshow() 方法默认aspect参数值为'equal',会强制数组中单个数据点在x、y轴方向的显示尺寸完全相等。待绘制的数组bx方向长度为21600、y方向仅48,两个方向的尺寸差达到450:1,默认等比例约束下,即便手动调大纵向画布尺寸,绘图区域的比例也无法适配长条形数据的展示需求。
  • matplotlib默认的轴刻度自动生成逻辑没有针对y轴这种小值域场景(y轴索引范围仅0~47,对应48行数据)做适配,自动生成的刻度数量过多,直接显示会出现标签重叠、拥挤的问题。
可行解决方案

核心修改点有两个:一是取消imshow的等像素比例约束,让热力图自动适配画布尺寸;二是手动配置y轴刻度间隔,避免标签重叠。完整可运行代码如下:

import matplotlib.pyplot as plt
import numpy as np

# b为形状(48, 21600)的待绘制numpy数组
fig, ax = plt.subplots(figsize=(12, 4), dpi=200)
# 关键配置:*aspect='auto'* 让热力图自动适配绘图区域比例
img = ax.imshow(b, aspect='auto', cmap='viridis')
plt.grid(False)

# 手动设置y轴刻度,每8行显示一个刻度,步长可根据展示需求调整
ax.set_yticks(np.arange(0, 48, step=8))
# 可选:x轴共21600个点,默认刻度易拥挤,可按需设置x轴刻度间隔
ax.set_xticks(np.arange(0, 21601, step=3600))

cbar = plt.colorbar(img)
cbar.set_label('Heat')
# 自动调整布局,避免色条、轴标签被画布截断
plt.tight_layout()
plt.show()

调整说明

  • 刻度步长可根据实际需求修改:如果需要更密集的y轴刻度,就把set_yticks里的step值调小,反之调大即可。
  • 设置aspect='auto'后,figsize参数可以根据展示场景自由调整,热力图会自动拉伸填满设定的绘图区域,不会再出现比例失调问题。
  • 若需要更换热力图配色,可修改imshow的cmap参数,matplotlib内置的hot、coolwarm、jet等色卡均可直接传入使用。

内容的提问来源于stack exchange,提问作者Mohammad Marwan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:33:39