在 matplotlib 中更改范围而不缩放
Change range withouth scaling in matplot
我有一个问题,我正在制作一个显示秘鲁缩放区域的程序,但显示的轴在图像范围内(例如 7000x7500),但我想在 UTM 范围内(例如 x 轴)在 500000-600000 和 y 轴 9500000-9700000 之间)
我试过使用 plt.set_xlim
和 plt.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( ... )
。
我有一个问题,我正在制作一个显示秘鲁缩放区域的程序,但显示的轴在图像范围内(例如 7000x7500),但我想在 UTM 范围内(例如 x 轴)在 500000-600000 和 y 轴 9500000-9700000 之间)
我试过使用 plt.set_xlim
和 plt.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( ... )
。