使用 plt.pause() 时 Pyplot 动画无法正常工作

问题描述 投票:0回答:1

我正在尝试使用 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。我将不胜感激任何建议。谢谢。

pause matplotlibpyplot
1个回答
0
投票

我认为这个示例不适用于 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 中的内联动画以获取更多信息(此示例也取自那里)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.