在 matplotlib 中更改范围而不缩放

Change range withouth scaling in matplot

我有一个问题,我正在制作一个显示秘鲁缩放区域的程序,但显示的轴在图像范围内(例如 7000x7500),但我想在 UTM 范围内(例如 x 轴)在 500000-600000 和 y 轴 9500000-9700000 之间) 我试过使用 plt.set_xlimplt.sety_lim 但没有成功,我想我必须使用 plt.autoscale(False) 但它也没有用或者我用错了。

我在主程序之外创建图形和坐标轴

f = plt.figure(figsize=(5,5))
axe = f.add_axes([0, 0, 1, 1])

这是我每次想绘制时调用的函数

def plotear(self, mapa):

    axe.clear()
    axe.imshow(mapa, cmap='gray', interpolation='nearest')
    axe.set_xlim(0,10000) #This is just for testing
    axe.set_ylim(0,10000) #This is just for testing
    plt.autoscale(False)
    self.canvas.draw()


编辑:@ImportanceOfBeingErnest 的回答符合预期!现在我遇到了另一个问题,在 canvas 中,我正在显示图像,x 轴和 y 轴没有正确显示,这是图像 example 我该如何解决?谢谢。

imshow documentation 你会发现有一个参数 extent 可以用来缩放图像。

extent : scalars (left, right, bottom, top), optional, default: None
The location, in data-coordinates, of the lower-left and upper-right corners. If None, the image is positioned such that the pixel centers fall on zero-based (row, column) indices.

在这种情况下,您可以像

那样使用它
ax.imshow(mapa, extent=[5e5, 6e5, 9.5e6, 9.7e6])


编辑问题的答案:
图片过大的情况下,可能是你设置了axe = f.add_axes([0, 0, 1, 1])造成的。您应该使用 ax = fig.add_subplot(111),如果页边距不符合您的要求,则使用相应的间距设置 plt.subplots_adjust( ... )