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

2024-10-02 16:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个循环,它利用'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循环中的图像非常有效,但是如何在每次迭代时强制颜色比例是自动的呢?在

谢谢。在

巴特回答后的错误信息:

2016-05-30 13:34:06.574 python[26795:3953860] setCanCycle: is deprecated. Please use setCollectionBehavior instead 2016-05-30 13:34:06.586 python[26795:3953860] setCanCycle: is deprecated. Please use setCollectionBehavior instead 2016-05-30 13:34:06.588 python[26795:3953860] setCanCycle: is deprecated. Please use setCollectionBehavior instead 2016-05-30 13:34:06.920 python[26795:3953860] setCanCycle: is deprecated. Please use setCollectionBehavior instead /Users/roger/anaconda2/lib/python2.7/site-packages/matplotlib/backend_bases.py:2437: MatplotlibDeprecationWarning: Using default event loop until function specific to this GUI is implemented warnings.warn(str, mplDeprecation)"


Tags: 图像datais颜色usefigpltax
1条回答
网友
1楼 · 发布于 2024-10-02 16:32:21

您可以使用im.set_clim()手动更改vminvmax,然后颜色条(假设您所指的“颜色轴”)将自动重新缩放:

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);

相关问题 更多 >