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

绘制热力图时plt.imshow()与plt.matshow()的差异对比

plt.imshow() 与 plt.matshow() 在矩阵热力图可视化中的差异

问题背景

给定矩阵:

a = [[1, 1, 1, 1], [1, 2, 3, 4], [4, 3, 2, 1], [4, 4, 4, 4]]

使用Matplotlib绘制热力图时,plt.imshow(a)和plt.matshow(a)生成的热力图外观相似,但两者在矩阵可视化场景下存在明确差异,具体如下:

核心差异点

1. 坐标轴默认行为

  • plt.matshow():默认适配矩阵阅读习惯,y轴刻度从上到下递增(矩阵第一行对应图表顶部),且自动显示行列索引的刻度标签,无需额外配置。
  • plt.imshow():默认遵循图像像素坐标系,y轴从下到上递增(图像第一行对应图表底部),默认不显示行列刻度标签,需要手动调用plt.xticks()、plt.yticks()开启;若要匹配矩阵的y轴方向,需额外执行plt.gca().invert_yaxis()。

2. 子图与布局逻辑

  • plt.matshow():是专为矩阵可视化设计的快捷函数,会自动创建新子图并优化布局,无需手动初始化画布,适合快速生成矩阵热力图。
  • plt.imshow():是通用图像渲染函数,通常需要配合plt.figure()或已有子图使用,灵活性更高,支持在同一画布中与折线图、散点图等其他图表组合展示。

3. 适用场景

  • plt.matshow():仅针对矩阵数值可视化优化,适合快速查看矩阵的数值分布、特征模式等场景。
  • plt.imshow():适用范围更广,除矩阵外,还能处理RGB图像、灰度图像等真实图像数据,是图像可视化的通用工具。

差异演示代码

from matplotlib import pyplot as plt
a = [[1, 1, 1, 1], [1, 2, 3, 4], [4, 3, 2, 1], [4, 4, 4, 4]]

# 展示plt.matshow()的默认效果
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.matshow(a, fignum=False)
plt.title('plt.matshow() 默认效果')

# 展示plt.imshow()的默认效果(手动添加刻度)
plt.subplot(1, 2, 2)
plt.imshow(a)
plt.title('plt.imshow() 默认效果(添加刻度)')
plt.xticks(range(4))
plt.yticks(range(4))

plt.tight_layout()
plt.show()

运行上述代码后,可清晰看到两者坐标轴方向和显示逻辑的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:23:26