matplotlib 中的动画在 spyder 中不起作用

Posted

技术标签:

【中文标题】matplotlib 中的动画在 spyder 中不起作用【英文标题】:Animation from matplotlib not working in spyder 【发布时间】:2016-06-21 17:33:31 【问题描述】:

我是 python 和 *** 的新手,我正在查看 matplotlib 中的示例。尽管我能够在 *** 中找到具有相同问题的previously unanswered question,但我一直在寻找解决此问题的方法,但没有成功。

基本上,我从matplotlib 的示例中复制了可用的代码;例如:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def data_gen(t=0):
    cnt = 0
    while cnt < 1000:
        cnt += 1
        t += 0.1
        yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
def init():
    ax.set_ylim(-1.1, 1.1)
    ax.set_xlim(0, 10)
    del xdata[:]
    del ydata[:]
    line.set_data(xdata, ydata)
    return line,

fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.grid()
xdata, ydata = [], []


def run(data):
    # update the data
    t, y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)

    return line,

ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10,
                          repeat=False, init_func=init)
plt.show()

我在 Anaconda 2 (python 2.7) 和 3 (python 3.5) 中运行了各种动画示例,并且都给了我一个没有动画的空白图。但是,每个动画在 Enthought Canopy 中都能完美运行。

我在使用 spyder 时是否缺少一些简单的东西?

【问题讨论】:

【参考方案1】:

您必须更改后端才能在 IPython 控制台中运行动画。您可以通过在动画之前运行%matplotlib qt 命令来做到这一点。

如果你不想每次都使用这个命令,你可以去: Tools &gt; Preferences &gt; IPython Console &gt; Graphics &gt; Backend 并将其从 "Inline" 更改为 "Automatic"

更新:2018 年 2 月,现在在 python>Preferences 在窗口的 LH 窗格中选择 IPython 控制台。选择“图形”选项卡,后端就在其中。

更多详情请阅读this。

【讨论】:

完美,谢谢!只要我有足够的代表,我就会投票。 我还必须使用%matplotlib gt5。不知道为什么更改首选项不起作用。 更改值后,别忘了重启IDE(Spyder、PyCharm等)

以上是关于matplotlib 中的动画在 spyder 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

spyder控制台中的Matplotlib后端错误?

如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]

使用 matplotlib 在 Spyder 中进行交互式(?)绘图

如何在 Spyder/IPython/matplotlib 中再次获得交互式绘图?

在 Spyder IDE 中使用 Matplotlib 绘制内联或单独的窗口

spyder 4.0.1 的 Matplotlib 问题