强制python在每次迭代时自动缩放图像中的颜色条

时间:2016-05-28 20:27:00

标签: python matplotlib colors figure

我有一个使用'set_data'命令的循环,这样我就可以在循环中快速映射Python中的数据。这得到了这个答案的启发here

然而,有一个问题是,每次出现新图像时,色轴似乎都没有重新缩放。这使得每次绘制新图像时都会越来越难以看到图像中的细节。

我试图强制Python在每次迭代时简单地自动缩放颜色轴,但我似乎无法这样做。这就是我所拥有的:

fig, ax = plt.subplots()
im = ax.imshow(someImage[:,:,0], interpolation='none')
ax.set_aspect('auto'); fig.show(); 
for ii in range(numberOfImages):
    im.set_data(someImage[:,:,ii]);
    fig.show();
    plt.pause(0.2);

这很适合在Python中快速更新for循环中的图像,但是如何在每次迭代时强制使用颜色标度?

感谢。

Bart回答后的错误信息:

  

2016-05-30 13:34:06.574 python [26795:3953860] setCanCycle:is   弃用。请使用setCollectionBehavior代替2016-05-30   13:34:06.586 python [26795:3953860] setCanCycle:不推荐使用。请   使用setCollectionBehavior代替2016-05-30 13:34:06.588   python [26795:3953860] setCanCycle:不推荐使用。请用   setCollectionBehavior而不是2016-05-30 13:34:06.920   python [26795:3953860] setCanCycle:不推荐使用。请用   而是setCollectionBehavior   /Users/roger/anaconda2/lib/python2.7/site-packages/matplotlib/backend_bases.py:2437:   MatplotlibDeprecationWarning:使用默认事件循环直到函数   特定于此GUI实现warnings.warn(str,   mplDeprecation)“

1 个答案:

答案 0 :(得分:1)

您可以使用vmin手动更改vmaxim.set_clim(),然后使用颜色栏(假设您所指的是"颜色轴" )自动重新缩放:

import matplotlib.pylab as pl
import numpy as np

pl.close('all')

someImage = np.random.random((4,4,3))
someImage[:,:,1] *= 10
someImage[:,:,2] *= 100

fig, ax = pl.subplots()
im = ax.imshow(someImage[:,:,0], interpolation='none')
pl.colorbar(im)
ax.set_aspect('auto'); fig.show(); 
for ii in range(1,3):
    im.set_data(someImage[:,:,ii]);
    im.set_clim(vmin=someImage[:,:,ii].min(), vmax=someImage[:,:,ii].max())
    fig.show();
    pl.pause(1.0);