在ipython笔记本中的动画图形

Dav*_*jad 18 plot ipython

有没有办法创建动画图形.例如,显示具有不同参数的相同图表.

例如是SAGE笔记本,可以写:

a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)], 
            xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
Run Code Online (Sandbox Code Playgroud)

gog*_*ger 9

这有可怕的闪烁,但至少这创造了一个动画为我的情节.它基于Aron,但是Aron不能按原样运行.

import time, sys
from IPython.core.display import clear_output
f, ax = plt.subplots()

n = 30
x = array([i/10.0 for i in range(n)])
y = array([sin(i) for i in x])
for i in range(5,n):
  ax.plot(x[:i],y[:i])
  time.sleep(0.1)
  clear_output()
  display(f)
  ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
Run Code Online (Sandbox Code Playgroud)


Aro*_*dia 7

更新:2014年1月

杰克Vanderplas创造了一个基于JavaScript的包可用matplotlib动画这里.使用它很简单:

 # https://github.com/jakevdp/JSAnimation
 from JSAnimation import examples
 examples.basic_animation()
Run Code Online (Sandbox Code Playgroud)

Jake的JSAnimation包的示例

有关更完整的说明和示例,请参阅他的博客文章. 历史答案(见枪支纠正)

是的,Javascript更新还没有正确保存图像框架,所以有闪烁,但你可以使用这种技术做一些非常简单的事情:

import time, sys
from IPython.display import clear_output
f, ax = plt.subplots()

for i in range(10):
  y = i/10*sin(x) 
  ax.plot(x,y)
  time.sleep(0.5)
  clear_output()
  display(f)
  ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
Run Code Online (Sandbox Code Playgroud)


Luc*_*ano 5

如果您使用IPython笔记本,则v2.0及更高版本支持交互式小部件.你可以在这里找到一个很好的示例笔记本(你需要从你自己的机器下载和运行才能看到滑块).

它基本上归结为导入interact,然后传递一个函数,以及参数的范围.例如,从第二个链接:

In [8]:
def pltsin(f, a):
    plot(x,a*sin(2*pi*x*f))
    ylim(-10,10)
In [9]:
interact(pltsin, f=(1,10,0.1), a=(1,10,1));
Run Code Online (Sandbox Code Playgroud)

这将产生一个带有两个滑块的图,用于fa.


Mat*_*hez 5

IPython小部件允许您使用Notebook中的GUI对象操作内核中的Python对象.您可能也喜欢Sage 托管的IPython笔记本.在笔记本中共享小部件或交互性可能遇到的一个问题是,如果其他人没有IPython,他们将无法运行您的工作.要解决此问题,您可以使用Domino 与其他人可以运行的小部件共享笔记本.

下面是三个可以在Notebook中构建的小部件示例,它们使用pandas过滤数据,分形和3D绘图的滑块.了解更多信息,并在此处查看代码和笔记本.




在此输入图像描述




在此输入图像描述




在此输入图像描述




如果要实时流式传输数据或设置模拟以作为循环运行,您还可以将数据流式传输到Notebook中的绘图中.免责声明:我为Plotly工作.