我是python和stackoverflow的新手,我正在matplotlib上看一些例子。虽然我能够在stackoverflow中找到具有相同问题的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)和&amp ;;中都运行了各种动画示例。 3(python 3.5),两个都给我一个没有动画的空白图。但是,每个动画在Enthought Canopy中运行得非常好。
使用spyder时是否有一些简单的东西?
答案 0 :(得分:16)
您必须更改后端才能在IPython控制台中运行动画。您可以通过在动画之前运行if (likely) {
// do something lightweight (addition, subtraction, etc.)
} else {
// do something expensive (cache-miss, division, sin/cos/tan etc.)
}
命令来完成此操作。
如果您不想每次都使用此命令,您可以访问:
%matplotlib qt
并将其从Tools > Preferences > IPython Console > Graphics > Backend
更改为"Inline"
。
更新:2018年2月,现在是python&gt;首选项在窗口中,在窗口的LH窗格中选择IPython控制台。选择Graphics选项卡,后端就在那里。
有关详细信息,请阅读this。