Matplotlib FuncAnimation 只显示一帧
Matplotlib FuncAnimation only shows one frame
我正在尝试使用 FuncAnimation
模块制作动画,但我的代码只生成一帧。看起来它更新了正确的东西 (k
) 并继续播放适当数量的帧的动画,但每一帧都显示 k=0 的第一张图像。
def plotheatmap(u_k, k):
# Clear the current plot figure
plt.clf()
plt.title(f"Temperature at t = {k*dt:.3f} unit time")
plt.xlabel("x")
plt.ylabel("y")
# This is to plot u_k (u at time-step k)
plt.pcolormesh(u_k, cmap=plt.cm.jet, vmin=0, vmax=4)
plt.colorbar()
def animate(k):
plotheatmap(convert(U)[k], k)
anim = animation.FuncAnimation(plt.figure(), animate, interval=200, frames=M+1)
由于您没有提供可重现的示例,我将生成随机数据,您将根据自己的情况进行调整。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
x = np.arange(-0.5, 10, 1)
y = np.arange(4.5, 11, 1)
fig, ax = plt.subplots()
ax.set_xlabel("x")
ax.set_ylabel("y")
def plotheatmap(k):
z = np.random.rand(6, 10)
# clear the previously added heatmaps
ax.collections.clear()
# add a new heatmap
ax.pcolormesh(x, y, z)
ax.set_title(f"Temperature at t = {k:.3f} unit time")
def animate(k):
plotheatmap(k)
M = 10
anim = FuncAnimation(fig, animate, interval=200, frames=M+1)
我正在尝试使用 FuncAnimation
模块制作动画,但我的代码只生成一帧。看起来它更新了正确的东西 (k
) 并继续播放适当数量的帧的动画,但每一帧都显示 k=0 的第一张图像。
def plotheatmap(u_k, k):
# Clear the current plot figure
plt.clf()
plt.title(f"Temperature at t = {k*dt:.3f} unit time")
plt.xlabel("x")
plt.ylabel("y")
# This is to plot u_k (u at time-step k)
plt.pcolormesh(u_k, cmap=plt.cm.jet, vmin=0, vmax=4)
plt.colorbar()
def animate(k):
plotheatmap(convert(U)[k], k)
anim = animation.FuncAnimation(plt.figure(), animate, interval=200, frames=M+1)
由于您没有提供可重现的示例,我将生成随机数据,您将根据自己的情况进行调整。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
x = np.arange(-0.5, 10, 1)
y = np.arange(4.5, 11, 1)
fig, ax = plt.subplots()
ax.set_xlabel("x")
ax.set_ylabel("y")
def plotheatmap(k):
z = np.random.rand(6, 10)
# clear the previously added heatmaps
ax.collections.clear()
# add a new heatmap
ax.pcolormesh(x, y, z)
ax.set_title(f"Temperature at t = {k:.3f} unit time")
def animate(k):
plotheatmap(k)
M = 10
anim = FuncAnimation(fig, animate, interval=200, frames=M+1)