2

matplotlib.animationという名前の 3D 配列のデータをアニメーション化するために使用しarrます。h5pyライブラリを使用して h5 ファイルからデータを読み取りましたが、すべて問題ありません。しかし、アニメーションを使用すると、カラーマップがデータ範囲の最初のフレームでスタックし、いくつかの手順の後、プロット中に正規化されていない色が表示されます。

これが私のコードです:

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()
4

1 に答える 1

6

set_clim()と交換したいと思います

p.autoscale()

引数がない場合set_clim()はノーオペレーションです。

とはいえ、アニメーションの途中でカラー スケールを変更すると、非常に誤解を招くように思えます。

(ドキュメントによると)set_data代わりに使用する必要があります。set_array

于 2013-05-20T20:22:38.073 に答える