2012-08-28 18 views
5

私は、次のようなベースマップ上のベクトル場を生成するために、ループを使用しています:効率的にループでmatplotlibのの震えを使用して

for i in range(365): 
    barbs = m.quiver(x, y, u[i, :], v[i, :], scale = 100) 
    plt.draw() 
    barbs.remove() 

プログラムは、すべてのループを大幅に多くのメモリを取ります。これを回避する方法はありますか?例えば、各ループの終わりに野蛮を完全に削除するなど?

+0

なぜそれらを描画してから削除しますか?プロットをスピードアップする1つの方法は、最初にそれらを作成し、最後にioff()を呼び出すことによって対話モードをオフに設定してdrawを呼び出すことです。あなたはこの例から遠いですが、不完全なので、あなたが望むものを推測するのは難しいです。 – tom10

答えて

4

(u、v)コンポーネントをリセットする必要がある場合は、ループ内でbarb.set_UVC(newU,newV,newC)を使用できます。あなたがアニメーションを作成しようとしている場合

barbs = m.quiver(x, y, u[0, :], v[0, :], scale = 100) 
for i in range(365): 
    barbs.set_UVC(u[i,:],v[i,:]) 
    #save the figure or something 

また、matplotlibののanimationモジュールに見て、Python: copy basemap or remove data from figureVisualization of 3D-numpy-array frame by frame

を参照してください、それはあなたのために多くの詳細の世話をします。

関連する問題