Python matplotlib 动画绘制详情

作者:Chandler_river 时间:2022-04-12 14:36:52 

最最简单的操作

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.subplots()

x = np.linspace(0,10,100)
y = np.sin(x)

while True:
   ax.plot(x,y)
   plt.pause(1)
   ax.cla()      
   x += np.pi/30    
   y = np.sin(x)

有人会问,为什么不能直接 用 plot 替代 ax 呢?

好问题,你可以一试,会发现这玩意没法关掉 。。 当然  ctrl + C等暴力手段是任何时候都ok的

Animation类

FuncAnimation

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

Python matplotlib 动画绘制详情

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.subplots()

x = np.linspace(0,10,100)
y = np.sin(x)
ax.set_aspect(3)
ax.plot(x,y,'-.',c='red',label="the old one")
line = ax.plot(x,y,c='green')
plt.legend()

def fun(i):  
   global x    
   x += 0.1
   y = np.sin(x)
   line[0].set_ydata(y)
   return line

animation = FuncAnimation(fig,fun,interval=100)
plt.show()

这就有两个问题需要解决一下

第一个:line到底是什么类型的东西

type(line)
<class 'list'>

明显,这就是。。列表。

第二个:set_data;set_xdata;set_ydata

你可以自己更改一下试试看,结果是显而易见的

ArtistAnimation

它的好处是你不要费尽心机去想一个可能 勾八 的函数了

它的坏处是 :

一个能用函数表示的动画 为什么要在新增一个列表才能表达呢?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
fig = plt.figure()
ax = fig.subplots()

frames = []
x = np.linspace(0,np.pi*2,10)
for i in range(20):
   x += np.pi*2/20
   y = np.sin(x)
   frames.append(ax.plot(y,'-.',c='red'))

animation = ArtistAnimation(fig,frames,interval=100)
plt.show()

很好!现在只需要保存动画就圆满了

动画保存

.save()函数

filename画文件名+后缀
fps动画每秒的帧数   默认值为 原动画的帧数
dpi动画每英寸的点数 默认值为 原动画的点数
codec编码格式 默认值为&rsquo;h264&rsquo;

filename画文件名+后缀fps动画每秒的帧数   默认值为 原动画的帧数dpi动画每英寸的点数 默认值为 原动画的点数codec编码格式 默认值为&rsquo;h264&rsquo;

animation.save("1.gif")

Python matplotlib 动画绘制详情

来源:https://blog.csdn.net/Chandler_river/article/details/126629490

标签:Python,matplotlib,动画,绘制
0
投稿

猜你喜欢

  • python数据挖掘需要学的内容

    2021-02-26 00:54:13
  • Python绘制散点密度图的三种方式详解

    2021-12-07 00:21:04
  • 用户的期望以及背后真正的需求

    2009-06-19 12:39:00
  • python自动化测试selenium操作下拉列表实现

    2023-09-06 00:26:50
  • 如何在事件代理中正确使用 focus 和 blur 事件

    2010-01-30 12:51:00
  • python爬虫框架feapder的使用简介

    2021-07-20 14:38:27
  • Python使用pywebview开发桌面应用的全过程

    2023-08-16 09:11:18
  • python中列表和元组的区别

    2022-05-21 16:06:00
  • Python简单网络编程示例【客户端与服务端】

    2023-12-07 10:26:55
  • HTML 5 Video概述

    2010-06-23 18:56:00
  • Django项目连接MongoDB的三种方法

    2022-05-27 05:23:43
  • jupyter notebook tensorflow打印device信息实例

    2021-02-06 09:34:40
  • 如何卸载python插件

    2023-11-21 22:24:31
  • JavaScript实现的背景自动变色代码

    2024-04-16 09:02:17
  • Go语言实现文件上传

    2023-07-08 18:26:38
  • Python 安装setuptools和pip工具操作方法(必看)

    2023-11-06 11:46:07
  • mpvue+vant app搭建微信小程序的方法步骤

    2024-05-29 22:22:42
  • js如何读取csv内容拼接成json

    2023-08-13 02:20:14
  • 网页制作前台之javascript

    2013-07-23 08:32:59
  • 使用Python编写类UNIX系统的命令行工具的教程

    2023-08-24 05:03:02
  • asp之家 网络编程 m.aspxhome.com