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

Matplotlib imshow绘图如何将坐标轴刻度值乘以100倍

问题本质

plt.imshow() 默认以输入二维数组的行列索引值作为x、y轴的刻度基准,和数组内存储的数值大小无关。你给数组整体乘以100,只会改变每个位置对应的色值映射,完全不会影响坐标轴的刻度生成逻辑,所以刻度不会按预期放大。

实现方法

你可以通过指定坐标范围+自定义刻度的方式直接实现需求,代码如下:

import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt("input.txt")
# 获取输入数据的行列数,计算放大100倍后的坐标范围
# extent参数格式为[x轴起点, x轴终点, y轴终点, y轴起点],适配imshow默认左上角为原点的规则
height, width = data.shape
plt.imshow(
    100 * data,
    cmap='jet',
    interpolation='none',
    extent=[0, width*100, height*100, 0]
)
# 直接传入你需要的目标刻度序列
target_ticks = [0, 2500, 5000, 7500, 10000, 12500, 15000, 17500, 20000]
plt.xticks(target_ticks)
plt.yticks(target_ticks)
plt.show()

如果不想修改坐标映射范围,也可以在绘图后单独修改刻度标签,保持像素位置和索引对齐,只把显示的标签值放大100倍:

import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt("input.txt")
plt.imshow(100*data, cmap='jet', interpolation='none')
ax = plt.gca()
target_ticks = [0, 2500, 5000, 7500, 10000, 12500, 15000, 17500, 20000]
# 刻度位置对应原始索引值(标签值/100),标签直接显示放大100倍后的数值
ax.set_xticks([tick/100 for tick in target_ticks], labels=target_ticks)
ax.set_yticks([tick/100 for tick in target_ticks], labels=target_ticks)
plt.show()

提示:如果你的输入数组尺寸不是200*200,只需要对应调整extent的终点值和刻度列表即可,核心是建立数组索引和实际显示刻度值1:100的映射关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:15:42