2015-11-01 99 views
4

我想要生成隨時間變化的溫度變化的四面板動畫。子圖中的四個面板中的每一個都應該是動畫地圖;每個面板之間的差異是所使用的數據。我已成功地生成用下面的代碼使用一組數據(不含副區)動畫:插曲動畫Matplotlib Subplot動畫與底圖

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
from mpl_toolkits.basemap import Basemap 

#dummy temperature data with 10 time-steps 
y=np.random.randn(10, 60, 100) 

fig = plt.figure() 
m = Basemap(projection='kav7',lon_0=0) 
lats=np.linspace(90,-90,y.shape[1]) 
lons=np.linspace(-180,180,y.shape[2]) 
lons, lats = np.meshgrid(lons,lats) 

m.drawparallels(np.arange(-90.,99.,30.), labels=[1,0,0,0]) 
m.drawmeridians(np.arange(-180.,180.,60.), labels=[0,0,0,1]) 
m.drawcoastlines(linewidth=0.25) 
m.pcolormesh(lons,lats,y[0],cmap=plt.cm.bwr, shading='flat',latlon=True) 

def init(): 
    m                                                                         

def animate(i): 
    m.pcolormesh(lons,lats,y[i],cmap=plt.cm.bwr, shading='flat',latlon=True) 
    return m 

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=10, interval=100) #interval = number of milliseconds between frames                                                                              

anim.save('movie.mp4') 

我已經看過無數的例子(123),但仍然不知道如何去做與底圖。

+0

如果您鏈接到您提到的大量示例中的一個,這將是一個更好的問題。 http://matplotlib.org/api/animation_api.html?highlight=funcanimation#matplotlib.animation.FuncAnimation –

+0

感謝您的編輯!並接受答案。歡迎來到SO! –

回答

1

您的動畫功能需要更新圖中四個獨立軸上的四個不同地圖。

  • 創建四個小組:

    fig, ax = plt.subplots(2, 2) 
    

的軸索引。我建議將它們放置在2x2佈局中的方式,它們被編入索引爲2-d數組,因此在創建映射時請參考軸爲ax[0][0],ax[0][1],ax[1][0]ax[1][1]

  • 當您創建底圖你的四個實例,每個地圖分配給使用 ax參數(docs)不同的軸。

  • 在您的animate函數中,更改每個軸的着色。根據數據分配顏色以映射m_im_i.pcolormesh(docs)如您的問題所示。

+1

謝謝BBrown。我已經在你的幫助下解決了它。對於兩個面板人物一個也將調整 '初始化' 功能: 'DEF的init(): fig' 並調整animate函數到: 'DEF動畫(ⅰ): m_a.pcolormesh(LONS, lats,y [i],cmap = plt.cm.bwr,shading ='flat',latlon = True) m_b.pcolormesh(lons,lats,y [i],cmap = plt.cm.bwr,shading =' flat',latlon = True) return m_a,m_b' –