在python matplotlib中重新自动缩放图像

时间:2014-12-07 12:51:19

标签: python matplotlib

我在Matplotlib文档中找到解决问题的方法时遇到了困难。这是一个非常简单的问题的例子。我对解决方案感兴趣,但更重要的是如何在官方matplotlib doc中找到解决方案!!!

我有一个初始空轴,自动缩小关闭:

import matplotlib.pyplot as plt
import numpy as np
fig= plt.figure()
ax = fig.add_subplot(111)
ax.autoscale(enable=False)
plt.show()
print ax.dataLim
print ax.viewLim

我对数据和视图都有0,1限制:

  

Bbox('array([[0,0。],\ n [1.,1。]])')   Bbox('array([[0,0。],\ n [1.,1。]])')

然后我添加一个部分与初始视图重叠但也向外扩展的图像:

arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
im = ax.imshow(arr,interpolation='Nearest',origin='lower')
im.set_extent([0.5,2.,0.5,2.])
plt.show()
print ax.dataLim
print ax.viewLim

我对数据和视图有以下限制:

  

Bbox('array([[ - 0.5,-0.5],\ n [2.5,2.5]])')   Bbox('array([[0,0。],\ n [1.,1。]])')

现在我改变主意并决定自动调整数据(和视图),期望这些限制:

  

Bbox('array([[ - 0.5,-0.5],\ n [2.5,2.5]])')   Bbox('array([[0.5,0.5],\ n [2.,2。]])')

我无法找到一个合适的自动缩放方案,结合了ax.autoscale(),ax.relim(),ax.autoscale_view,它达到了这个目标。 例如,限制包括数据,但在使用

时太大
ax.autoscale(enable=True)
ax.relim()
print ax.dataLim
print ax.viewLim
  

Bbox('array([[ - 0.5,-0.5],\ n [2.5,2.5]])')   Bbox('array([[ - 0.5,-0.5],\ n [2.5,2.5]])')

我发现的唯一非常不优雅的解决方案是重新定义图像范围:

ax.autoscale(enable=True)
im.set_extent(im.get_extent())
plt.show()
print ax.dataLim
print ax.viewLim
  

Bbox('array([[ - 0.5,-0.5],\ n [2.5,2.5]])')   Bbox('array([[0.5,0.5],\ n [2.,2。]])')

有没有人有一个像样的解决方案,可以解释我应该如何从文档中找到它? 感谢。

丹尼斯

0 个答案:

没有答案