简单的matplotlib动画。

celluloid的Python项目详细描述


赛璐珞

Build Statuscodecovpypipypi versions

简易matplotlib动画

创建动画应该很容易。 这个模块使你很容易适应你现有的可视化代码来创建动画。

安装

pip install celluloid

手动

遵循以下步骤:

  1. 创建matplotlib Figure,并从中创建Camera
fromcelluloidimportCamerafig=plt.figure()camera=Camera(fig)
  1. 重复使用图形并在创建每个帧后,使用相机拍摄快照。
plt.plot(...)plt.fancy_stuff()camera.snap()
  1. 捕获所有帧后,创建动画。
animation=camera.animate()animation.save('animation.mp4')

整个module不到50行代码。

示例

最小值

尽可能简单。

frommatplotlibimportpyplotaspltfromcelluloidimportCamerafig=plt.figure()camera=Camera(fig)foriinrange(10):plt.plot([i]*10)camera.snap()animation=camera.animate()

子批次

动画在顶部。

importnumpyasnpfrommatplotlibimportpyplotaspltfromcelluloidimportCamerafig,axes=plt.subplots(2)camera=Camera(fig)t=np.linspace(0,2*np.pi,128,endpoint=False)foriint:axes[0].plot(t,np.sin(t+i),color='blue')axes[1].plot(t,np.sin(t-i),color='blue')camera.snap()animation=camera.animate()

图像

域着色示例。

importnumpyasnpfrommatplotlibimportpyplotaspltfrommatplotlib.colorsimporthsv_to_rgbfromcelluloidimportCamerafig=plt.figure()camera=Camera(fig)forainnp.linspace(0,2*np.pi,30,endpoint=False):x=np.linspace(-3,3,800)X,Y=np.meshgrid(x,x)x=X+1j*Yy=(x**2-2.5)*(x-2.5*1j)*(x+2.5*1j) \
        *(x-2-1j)**2/((x-np.exp(1j*a))**2*(x-np.exp(1j*2*a))**2)H=np.angle(y)/(2*np.pi)+.5r=np.log2(1.+np.abs(y))S=(1.+np.abs(np.sin(2.*np.pi*r)))/2.V=(1.+np.abs(np.cos(2.*np.pi*r)))/2.rgb=hsv_to_rgb(np.dstack((H,S,V)))ax.imshow(rgb)camera.snap()animation=camera.animate()

图例

importmatplotlibfrommatplotlibimportpyplotaspltfromcelluloidimportCamerafig=plt.figure()camera=Camera(fig)foriinrange(5):t=plt.plot(range(i,i+5))plt.legend(t,[f'line {i}'])camera.snap()animation=camera.animate()

限制

  • 所有绘图的轴限制应相同。动画的界限将是最终情节的界限。
  • 图例将从以前的帧中累积。将艺术家传递到legend函数以分别绘制他们。

学分

灵感来自plotnine

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajooqmaven和多模式   java通过web控制台向wildfly添加数据源   java Kafka 2.9.1 producer 0.8.2.1编译与运行时依赖关系   可滚动的java SWT拆分窗格   java有ArraySet和ArrayMap这样的东西吗?   java Spring jdbc调用函数   java将绝对布局合并为标准布局   java如何正确地从Firebase中提取数据?   java计划以可变时间间隔运行任务   java关闭JFrame=>程序崩溃   java Junit测试,其中一些参数不同,另一些参数保持不变   java servletname在<servlet>和<servletmapping>中可以不同吗?   java有很多活动,好吗   java静态变量把一切都搞砸了   java Ashley ECS迭代系统未处理实体族