我正在尝试使用 plt.pause() 创建 pyplot 模拟,但我什至无法使最简单的示例工作。这是代码:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.random((50, 50, 50))
fig, ax = plt.subplots()
for i, img in enumerate(data):
ax.clear()
ax.imshow(img)
ax.set_title(f"frame {i}")
plt.pause(0.1)
这个问题似乎与最后一行代码(plt.pause(0.1))有关。如果没有这一行,最终输出将显示模拟的最终帧 — 第 49 帧(表示整个循环已完成)。如果我包含最后一行并运行模拟,输出将停止在第一帧 - 第 0 帧(并且模拟不会进入循环中的下一步)。我还尝试设置 plt.pause(0.0) 但这与将其设置为任何其他数字具有完全相同的效果。
我在Mac上,在jupyter笔记本7.2.1下使用python 3.12。我将不胜感激任何建议。谢谢。
我认为这个示例不适用于 Jupyter 笔记本。让 matplotlib 动画在笔记本中运行可能很麻烦......
尝试这个最小的示例来开始。有效果吗?:
import matplotlib.animation
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["animation.html"] = "jshtml"
plt.rcParams['figure.dpi'] = 150
plt.ioff()
fig, ax = plt.subplots()
x= np.linspace(0,10,100)
def animate(t):
plt.cla()
plt.plot(x-t,x)
plt.xlim(0,10)
matplotlib.animation.FuncAnimation(fig, animate, frames=10)
请参阅 Jupyter 中的内联动画以获取更多信息(此示例也取自那里)