Что-то вроде этого, что вам нравится делать? Мой пример ниже - на основе примера this - используется некоторое фиктивное изображение из функции generate_image
, определенной в скрипте. Из того, что я понимаю по вашему вопросу, вы предпочтете загрузить новый файл для каждой итерации, что можно сделать, заменив функциональность generate_image
. Вероятно, вы должны использовать массив file_names вместо массива с матрицами данных, как я здесь, но для прозрачности я сделал это таким образом (однако это очень неэффективно для больших наборов данных!).
Кроме того, я также добавил два дополнительных аргумента в FuncAnimation
-Call, 1) убедитесь, что он останавливается, когда вы из изображений (с frames=len(images)
) и 2) fargs=[images, ]
передать массив изображения в функцию. Вы можете прочитать больше here.
Также отметит, что
#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def generate_image(n):
def f(x, y):
return np.sin(x) + np.cos(y)
imgs = []
x = np.linspace(0, 2 * np.pi, 120)
y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)
for i in range(n):
x += np.pi/15.
y += np.pi/20.
imgs.append(f(x, y))
return imgs
images = generate_image(100)
fig, ax = plt.subplots(1, 1)
im = ax.imshow(images[0], cmap=plt.get_cmap('coolwarm'), animated=True)
def updatefig(i, my_arg):
im.set_array(my_arg[i])
return im,
ani = animation.FuncAnimation(fig, updatefig, frames=len(images), fargs=[images, ], interval=50, blit=True)
plt.show()
Пример имя файл загрузчик будет что-то вроде
def load_my_file(filename):
# load your file!
...
return loaded_array
file_names = ['file1', 'file2', 'file3']
def updatefig(i, my_arg):
# load file into an array
data = load_my_file(my_arg[i]) # <<---- load the file in whatever way you like
im.set_array(data)
return im,
ani = animation.FuncAnimation(fig, updatefig, frames=len(file_names), fargs=[file_names, ], interval=50, blit=True)
plt.show()
Надеется, что это помогает!