在ipython 2上为mac os制作动画图

时间:2014-06-23 20:22:48

标签: macos ipython-notebook

我正在尝试在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更正),但轴没有更新。

1 个答案:

答案 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()