gpt4 book ai didi

python - matplotlib 中的动画 matshow 函数

转载 作者:行者123 更新时间:2023-11-28 17:24:10 33 4
gpt4 key购买 nike

我有一个随时间变化的矩阵,我想将演化绘制成动画。

我的代码如下:

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


n_frames = 3 #Numero de ficheros que hemos generado
data = np.empty(n_frames, dtype=object) #Almacena los datos

#Leer todos los datos
for k in range(n_frames):
data[k] = np.loadtxt("frame"+str(k))


fig = plt.figure()
plot =plt.matshow(data[0])

def init():
plot.set_data(data[0])
return plot

def update(j):
plot.set_data(data[j])
return [plot]


anim = FuncAnimation(fig, update, init_func = init, frames=n_frames, interval = 30, blit=True)

plt.show()

但是,当我运行它时,我总是收到以下错误:draw_artist can only be used after an initial draw which caching the render。我不知道这个错误从何而来,也不知道如何解决。我读过this answer还有this article但仍然不知道为什么我的代码不起作用。

感谢任何帮助,谢谢!

最佳答案

您非常接近可行的解决方案。要么改变

plot = plt.matshow(data[0])

plot = plt.matshow(data[0], fignum=0)

或使用

plot = plt.imshow(data[0])

相反。


这里使用 plt.matshow(data[0]) 的问题在于它 creates a new figure如果 fignum 参数留空(即默认等于 None)。由于 fig = plt.figure() 被调用并且 fig 被传递给 FuncAnimation,你最终得到两个数字,一个是结果plt.matshow,另一个空白被 FuncAnimation 绘制。 FuncAnimation 正在绘制的图形找不到初始绘制,因此它引发了

AttributeError: draw_artist can only be used after an initial draw which caches the render

关于python - matplotlib 中的动画 matshow 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039112/

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