首页 > 解决方案 > matplotlib 动画适用于 Windows 和 Linux,但不适用于 Mac OS

问题描述

我在 Mac OS 上的 Python 脚本中遇到 matplotlib 动画问题。

完整的脚本在这里(有点长),动画部分在这里:

# ...
ani = animation.FuncAnimation(
    fig,
    animate,
    np.arange(m),
    interval=tint,
    blit=True,
    repeat=False
)
plt.show()

我遇到的问题是动画在 Windows 和 Linux 上运行良好,但在 Mac OS 上动画不显示。这是一个视频演示

在所有三个系统(Windows、Linux 和 Mac OS)上,我只安装了运行脚本matplotlibnumpy包,除此之外我没有安装任何东西,所以所有三个(应该)都有相同的包。以防万一,以下是他们环境的摘要:

# Windows (10.19041.450, x64)

- Python 3.7.2
- matplotlib 3.3.1
- numpy 1.19.1

# Linux (Ubuntu 20.04.1, x64)

- Python 3.8.2
- matplotlib 3.3.1
- numpy 1.19.1

# Mac OS (10.15.6, x64)

- Python 3.8.5
- matplotlib 3.3.1
- numpy 1.19.1

我尝试过其他简单的绘图动画示例(例如matplotlib 文档中的那些),它们在 Mac OS 上运行良好,所以我猜我的特定脚本有问题,但事实上这个相同的脚本适用于Windows 和 Linux(尽管出于某种原因具有不同的动画速度)让我很困惑。

我还在其他 3 台安装了不同 Mac OS 和 Python 版本的 Mac 上测试了我的脚本,但都是一样的。

您是否看到我的脚本在 Mac OS 上不显示动画的任何原因?

标签: pythonmatplotlibmatplotlib-animation

解决方案


我发现在我的情况下,默认的matplot 后端MacOSX,显然这个后端不能做我的动画(无论出于何种原因)。

而有能力的后端竟然是TkAgg. 所以在这样设置之后:

matplotlib.use("TkAgg")

我现在也可以在 Mac OS 上的脚本中获得动画。

如果您对更多细节感兴趣,我写了一篇关于它的博客文章。


推荐阅读