gpt4 book ai didi

python - 动画二次网格变化(matshow)

转载 作者:太空狗 更新时间:2023-10-29 20:12:56 25 4
gpt4 key购买 nike

我有一个 NxN 网格,其中包含一些值,每个时间步都会改变。我找到了一种使用 matshow 函数绘制单个网格配置的方法,但我不知道如何在每个时间步更新状态。下面是一个简单的例子:

from pylab import *
from matplotlib import pyplot

a = arange(25)
a = a.reshape(5,5)
b = 10*rand(5,5)
matshow(a-b, cmap = cm.jet)
colorbar()
show()

这段代码产生如下图片: enter image description here
现在假设下一个时间步某些值发生变化,这张图片也应该发生变化。这是我心中的逻辑:

from pylab import *
from matplotlib import pyplot

a = arange(25)
a = a.reshape(5,5)
time=10
for t in range(time):
b = 10*rand(5,5)
print b
matshow(a-b, cmap=cm.jet)
colorbar()
show()

这会产生 10 张图片。我想制作动画而不是生成单独的图片,例如我想选择更改之间的时间步长(即帧速率)。
此外,如果 matshow 不是可行的方法,我愿意接受有关不同功能的建议,但请保持简单,我相对缺乏经验。

最佳答案

matplotlib 1.1 有一个动画模块(查看 examples)。

使用 animation.FuncAnimation 你可以像这样更新你的情节:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def generate_data():
a = np.arange(25).reshape(5, 5)
b = 10 * np.random.rand(5, 5)
return a - b

def update(data):
mat.set_data(data)
return mat

def data_gen():
while True:
yield generate_data()

fig, ax = plt.subplots()
mat = ax.matshow(generate_data())
plt.colorbar(mat)
ani = animation.FuncAnimation(fig, update, data_gen, interval=500,
save_count=50)
plt.show()

您可以使用以下方式保存动画:

ani.save('animation.mp4')

我用它来保存

ani.save('animation.mp4', clear_temp=False)

帧是保留的,您可以创建如下所示的动画 gif

convert *.png animation.gif

enter image description here

关于python - 动画二次网格变化(matshow),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com