有没有办法创建动画图形.例如,显示具有不同参数的相同图表.
例如是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)
这有可怕的闪烁,但至少这创造了一个动画为我的情节.它基于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)
更新:2014年1月
杰克Vanderplas创造了一个基于JavaScript的包可用matplotlib动画这里.使用它很简单:
# https://github.com/jakevdp/JSAnimation
from JSAnimation import examples
examples.basic_animation()
Run Code Online (Sandbox Code Playgroud)
有关更完整的说明和示例,请参阅他的博客文章. 历史答案(见枪支纠正)
是的,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)
如果您使用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)
这将产生一个带有两个滑块的图,用于f
和a
.
IPython小部件允许您使用Notebook中的GUI对象操作内核中的Python对象.您可能也喜欢Sage 托管的IPython笔记本.在笔记本中共享小部件或交互性可能遇到的一个问题是,如果其他人没有IPython,他们将无法运行您的工作.要解决此问题,您可以使用Domino 与其他人可以运行的小部件共享笔记本.
下面是三个可以在Notebook中构建的小部件示例,它们使用pandas过滤数据,分形和3D绘图的滑块.了解更多信息,并在此处查看代码和笔记本.
如果要实时流式传输数据或设置模拟以作为循环运行,您还可以将数据流式传输到Notebook中的绘图中.免责声明:我为Plotly工作.
归档时间: |
|
查看次数: |
11416 次 |
最近记录: |