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

如何为Python中matplotlib的imshow添加自定义刻度?

搞定plt.imshow()自定义刻度的问题

为啥之前的代码不行?

plt.imshow()默认用数组的索引当坐标轴刻度——你这个11×11的数组,坐标轴刻度范围是0到10。直接把6.5到7.5的数值传给plt.xticks(),程序会把这些数当成索引位置找刻度,自然显示乱套。

正确实现方法

给plt.xticks()和plt.yticks()同时传两个参数就行:

  • 第一个是刻度在原坐标轴上的位置(必须对应0到10的索引范围)
  • 第二个是你想显示的自定义刻度标签

完整代码示例:

import numpy as np
import matplotlib.pyplot as plt

zmm = np.linspace(0,121,121).reshape(11,11)
plt.imshow(zmm, cmap = 'Blues')

# 定义要显示的自定义刻度标签
xtick_labels = np.linspace(6.5,7.5,6)
ytick_labels = np.linspace(.14,.18,6)
# 对应原坐标轴的位置(把0到10均匀分成6个点)
xtick_positions = np.linspace(0, 10, 6)
ytick_positions = np.linspace(0, 10, 6)

# 关联位置与标签,设置刻度
plt.xticks(ticks=xtick_positions, labels=xtick_labels.round(2))
plt.yticks(ticks=ytick_positions, labels=ytick_labels.round(2))

plt.show()

额外提示

  • 要是不想均匀分布刻度,也可以手动指定位置,比如xtick_positions = [1,3,5,7,9],再对应你需要的标签即可
  • round(2)是让刻度显示两位小数,看着更清爽,不需要的话可以直接去掉

内容的提问来源于stack exchange,提问作者Bruno Conte Leite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:16:10