在matplot中更改范围而不缩放

时间:2017-04-07 17:08:38

标签: python matplotlib range axes

我有一个问题,我正在制作一个程序,显示秘鲁的缩放区域,但显示的轴在图像的范围内(例如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的答案按预期工作!现在我有另一个问题,在我展示图像的画布中,x轴和y轴没有正确显示,这里是一个图像example 我怎么能解决它?感谢。

1 个答案:

答案 0 :(得分:1)

imshow documentation您发现有一个参数extent可用于缩放图片。

  

extent:标量(左,右,下,上),可选,默认:无
  数据坐标中左下角和右上角的位置。如果为None,则定位图像使得像素中心落在从零开始(行,列)的索引上。

在这种情况下,您可以像

一样使用它
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( ... )设置为相应的间距。