2016-05-28 5 views
1

ループにいる間、私は、私はPythonで急速に画像データをできるように'set_data'コマンドを利用してループを持っています。これは、この答えによって誘発されたhereです。フォースパイソン画像におけるカラーバー反復ごと

ただし、新しい画像が入るたびに色軸が再スケーリングされていないように見えることが1つあります。これは、新しい画像が描画されるたびに詳細を見るのが難しくなります。

私は単にオートスケール反復ごとに色の軸には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でループのために画像を更新するためにうまく動作しますが、各反復でオートようにカラースケールを強制的にどのように?

ありがとうございました。バートの答えの後

エラーメッセージ:

2016年5月30日13:34:06.574のpython [26795:3953860] setCanCycle: が推奨されていません。 setCollectionBehaviorを使用してください代わりに、2016年5月30日 13:34:06.586パイソン[26795:3953860] setCanCycle:廃止されました。ください 使用setCollectionBehavior代わりに2016年5月30日13:34:06.588 パイソン[26795:3953860] setCanCycleが:非推奨されます。 34:06.920 パイソン[26795:3953860] setCanCycle:廃止され setCollectionBehavior代わりに2016年5月30日13を使用してください。 MatplotlibDeprecationWarning: setCollectionBehavior代わり /Users/roger/anaconda2/lib/python2.7/site-packages/matplotlib/backend_bases.py:2437を使用してください。このGUIに固有の機能 実装されているwarnings.warnまで、デフォルトイベントループを使用して(STR、 mplDeprecation)」

+0

'plt.draw()'をサイクルで追加してプロットを再描画します。 – Serenity

+0

何かの時間依存性を見せている場合は、すべての画像に同じカラーマップを適用し、 'matplotlib'の動作が正しいとします。変更したいのは、初期カラーマップの範囲を、最初に選択した範囲よりも大きく、最初の画像の範囲に合わせて選択し、すべての画像シーケンスに適用できるようにすることです。 – gboffi

+0

@gboffiはい、時間依存性が気になるならば、そうです、それが私の行いです。しかしこの場合、私は時間依存性に気にしないので、適切なコントラストで信号を見ることができるように、繰り返しごとにカラーマップのスケールを再設定したいと思います。イメージベースでどのように再スケールすることができますか?ありがとう – TheGrapeBeyond

答えて

1

は、手動で、その後(それはあなたがように参照のうえされているものだと仮定するとカラーバー、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); 
を210
+0

こんにちはバート、ありがとう、残念ながらそれは動作しません:私はエラーが発生します。 (私の編集した記事を見てください)。ありがとう。 – TheGrapeBeyond

+0

どこから来ているのか分かりません。クイック検索はこれで私を提供:http://stackoverflow.com/questions/30818222/python-2-7-9-mac-os-10-10-3-message-setcancycle-is-deprecated-please-use- setc – Bart

+0

興味深い...今何をすべきかわからないsoooooo? lol – TheGrapeBeyond

関連する問題