我正在尝试在mac os和ipython notebook 2.0中动画(运行时)unlike this answer。我有以下代码:
%pylab inline
import time, sys
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import clear_output
f, ax = plt.subplots()
x = np.linspace(0,6,200)
for i in range(10):
y = i/10*np.sin(x)
print i
ax.plot(x,y)
time.sleep(0.1)
clear_output(True)
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
这似乎几乎可行,因为print
正在工作而没有闪烁(之前的问题,由clear_output
更正),但轴没有更新。
答案 0 :(得分:1)
这里的问题是i
是一个整数,所以行y = i/10*np.sin(x)
执行整数除法,它总是返回0.它是动画!但结果总是在0处变平。将该行更改为
y = float(i)/10*np.sin(x)
当你这样做时,你会注意到它没有以非常好的方式制作动画。为了使它看起来更好,我们可以明确设置y轴限制,而不是让Matplotlib自动执行。在你的循环中,添加行
ax.set_ylim(-1, 1)
下面的最终代码很好地动画了。
%pylab inline
import time, sys
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import clear_output
f, ax = plt.subplots()
x = np.linspace(0,6,200)
for i in range(10):
y = float(i)/10*np.sin(x)
print i
ax.set_ylim(-1, 1)
ax.plot(x,y)
time.sleep(0.1)
clear_output(True)
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()