Обновление одного «пикселя» с помощью imshow - PullRequest
0 голосов
/ 09 июля 2019

Я моделирую IsingModel с помощью Метрополиса-алгоритма в Фортране и хочу визуализировать шаги с питоном в виде фильма.У меня есть сетка 100x100 со значениями {-1,1} и выполнением около 1_000_000 шагов / изменений в сетке.

Я думал, что смогу построить / анимировать каждый шаг с помощью функции matplotlib pyplot.imshow по мере необходимостинекоторые снимки / изображения также.Однако я не могу найти вариант, чтобы просто обновить «пиксель», который был изменен на последнем шаге.И set_array (...) слишком медленно работает ... Есть ли быстрое решение, которого я не вижу, или мне нужно выбрать другую библиотеку?

def init():
    global lattice
    lattice=ff.read_record('({},{})i1'.format(N,N))
    im.set_data(lattice)
    return [im]

# animation function.  This is called sequentially
def animate(i):
    change=np.array(ff.read_record('i1','i1')).ravel()
    if(change[0]!=-1):
        lattice[change[0],change[1]]=-1*lattice[change[0],change[1]]

    im.set_array(lattice)
    return [im]

anim = animation.FuncAnimation(fig, animate,frames=10000 interval=10, init_func=init, blit=True)
anim.save('basic_animation.mp4', fps=30)
...