2013-05-20 97 views
0

我使用matplotlib.animation來爲名爲arr的3D數組中的數據設置動畫效果。我使用h5py庫從h5文件讀取數據,一切正常。但是在使用動畫時,色彩映射卡在數據範圍的第一幀中,並且在執行一些步驟後,它會在繪圖時顯示未標準化的顏色。在matplotlib中使用動畫的顏色映射問題

這裏是我的代碼:

import numpy as np 
import h5py 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
import matplotlib.cm as cm 

f = h5py.File('ez.h5','r') 
arr = f["ez"][:,:,:] 
f.close() 

fig = plt.figure() 

i = 0 
p = plt.imshow(arr[:,:,0], interpolation='bilinear', cmap=cm.RdYlGn) 

def updatefig(*args): 
    global i 
    i += 1 
    if (i==333): 
     i = 0 
    p.set_array(arr[:,:,i]) 
    plt.clim() 
    return p, 

ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True) 
plt.show() 

回答

1

我想你想與

p.autoscale() 

不帶任何參數,以取​​代set_clim()set_clim()是一個空操作。

也就是說,在動畫中間改變色階看起來很具誤導性。

您還應該使用set_data而不是set_array(根據文檔)。

+0

@VahidG如果它解決了你的問題,你可以接受它(答案左側的灰色複選框)?它將標誌着問題的解決,並給予我們雙方的聲譽。 – tacaswell

+0

感謝您的整齊和有益的答案!它解決了我的問題。 我認爲自動縮放()隻影響軸限制,並且對色彩映射沒有影響,但我錯了。 爲什麼你更喜歡set_data set_array(我找不到任何區別)? – VahidG

+1

'set_array'將在未來某個時候折舊。 'set_array'其實只是調用'set_data' https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/image.py#L429 – tacaswell

相關問題