使用imshow更新一个“像素”

时间:2019-07-09 20:29:10

标签: python imshow

我正在用Fortran中的Metropolis-Algorithm模拟IsingModel,并想将python的步骤可视化为电影。我有一个100x100的网格,其值来自{-1,1},并在网格上执行了约1_000_000步/更改。

我认为我可以使用matplotlib函数pyplot.imshow绘制/动画每个步骤,因为我还需要一些快照/图像。 但是我找不到一个选项来更新最后一步更改的“像素”。和set_array(...)reaaaallllyyy慢... 有没有我看不到的快速解决方案,或者我必须选择另一个图书馆?

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)

0 个答案:

没有答案