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

Matplotlib热力图坐标轴标签与单元格对齐异常的解决方法

修复Matplotlib热力图轴标签与单元格中心对齐的问题

问题出在extent参数设置和刻度位置的匹配上:你当前把extent设为x从0到4、y从0到6,热力图单元格会均分这个范围,导致刻度标签落在单元格边界而非中心。

修复方案:

  1. 调整extent范围:将轴的起止边界向外扩展0.5,让每个单元格的中心正好对应x_values和y_values的数值。
  2. 修正刻度位置:直接用x_values和y_values的元素作为刻度位置,确保标签精准对齐单元格中心。

修改后的完整代码:

import numpy as np
import matplotlib.pyplot as plt

x_values = [x for x in range(5)]
y_values = [y for y in range(7)]
z_values = np.random.rand(len(y_values), len(x_values))

# 调整extent,使单元格中心对齐x/y轴数值
plt.imshow(z_values, cmap='viridis', 
           extent=[min(x_values)-0.5, max(x_values)+0.5, 
                   min(y_values)-0.5, max(y_values)+0.5],
           origin='lower', aspect='auto')

# 保持y轴反转(若需要从上到下显示y值)
plt.gca().invert_yaxis()

# 直接使用x/y值作为刻度位置,标签与位置完全匹配
plt.yticks(y_values, y_values)
plt.xticks(x_values[::2], x_values[::2])

plt.show()

原理说明:

扩展extent后,每个单元格的宽度和高度变为1,单元格中心正好落在x_values(0-4)和y_values(0-6)的整数位置上,此时将刻度设置为这些数值,标签就会精准对齐单元格中心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:31:29