Проблема цветовой карты с использованием анимации в matplotlib

Я использую matplotlib.animation анимировать данные в трехмерном массиве с именем arr, Я читаю данные из файла h5, используя h5py библиотека и все ок. Но при использовании анимации цветовая карта застряла в первом кадре диапазона данных, и после некоторых шагов она отображает ненормализованные цвета при построении.

Вот мой код:

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 ответ

Решение

Я думаю, что вы хотите заменить set_clim() с

p.autoscale()

Без аргументов, set_clim() это неоперация.

Тем не менее, изменение вашей цветовой гаммы в середине анимации кажется очень обманчивым.

Вы также должны использовать set_data вместо set_array (согласно документации).

Другие вопросы по тегам