当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Matplotlib.animation.FuncAnimation用法及代码示例


Matplotlib是Python中令人惊叹的可视化库,用于数组的二维图。 Matplotlib是一个基于NumPy数组的多平台数据可视化库,旨在与更广泛的SciPy堆栈配合使用。

matplotlib.animation.FuncAnimation

matplotlib.animation.FuncAnimation类用于通过重复调用同一函数(例如func)来制作动画。

用法: class matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)

Paramcontribute.geeksforgeeks.org/wp-admin/post.php?post=1675187&action;=编辑者:

  1. fig:它是用于绘制,调整大小或其他任何所需事件的图形对象。
    可以通过fargs参数提供任何其他位置参数。

  2. func:每次都会调用可调用函数。通过第一个参数给出帧中的下一个值。其他任何其他位置参数是通过fargs参数给出的。如果blit值等于True,则func返回所有要修改或创建的艺术家的迭代。划线算法使用此数据来确定必须更新图形的哪些部分。如果blit == False,则返回的值未使用或省略。
  3. frames:它可以是可迭代的,整数,生成器函数或无。它是一个可选参数。它是要传递给func和动画每一帧的数据源。
  4. init_func:它是一个可选的可调用函数,用于绘制清晰的框架。
  5. fargs:它是一个可选参数,可以是元组或None,这是需要传递给func的每个调用的附加参数。
  6. save_count:它是一个整数,用作从帧到缓存的值数量的后备。仅在无法从帧推断帧数时使用,即当它是没有长度的迭代器或生成器时。默认值为100。
  7. interval:它是一个可选的整数值,表示每帧之间的延迟(以毫秒为单位)。默认值为100。
  8. repeat_delay:它是一个可选的整数值,它在重复动画之前添加以毫秒为单位的延迟。默认为无。
  9. blit:它是一个可选的布尔参数,用于控制绘图以优化图形。
  10. cache_frame_data:它是一个可选的布尔参数,用于控制数据的缓存。默认为True。

该类的方法:

方法 描述
__init__(self, fig, func[, frames, …]) 初始化自我。
new_frame_seq(self) 返回新的帧信息序列。
new_saved_frame_seq(self) 返回新的保存/缓存帧信息序列。
save(self, filename[, writer, fps, dpi, …]) 通过绘制每帧将动画另存为电影文件。
to_html5_video(self[, embed_limit]) 将动画转换为HTML5 <video>标签。
to_jshtml(self[, fps, embed_frames, …]) 生成动画的HTML表示

范例1:

import matplotlib.animation as animation  
import matplotlib.pyplot as plt  
import numpy as np  
  
  
# creating a blank window  
# for the animation  
fig = plt.figure()  
axis = plt.axes(xlim =(-50, 50),  
                ylim =(-50, 50))  
  
line, = axis.plot([], [], lw = 2)  
  
# what will our line dataset  
# contain?  
def init():  
    line.set_data([], [])  
    return line,  
  
# initializing empty values  
# for x and y coordinates  
xdata, ydata = [], []  
  
# animation function  
def animate(i):  
    # t is a parameter which varies  
    # with the frame number  
    t = 0.1 * i  
      
    # x, y values to be plotted  
    x = t * np.sin(t)  
    y = t * np.cos(t)  
      
    # appending values to the previously  
    # empty x and y data holders  
    xdata.append(x)  
    ydata.append(y)  
    line.set_data(xdata, ydata)  
      
    return line,  
  
# calling the animation function      
anim = animation.FuncAnimation(fig, animate,  
                            init_func = init,  
                            frames = 500, 
                            interval = 20,  
                            blit = True)  
  
# saves the animation in our desktop  
anim.save('growingCoil.mp4', writer = 'ffmpeg', fps = 30) 

输出:

范例2:

from matplotlib import pyplot as plt  
import numpy as np  
from matplotlib.animation import FuncAnimation  
  
# initializing a figure in  
# which the graph will be plotted  
fig = plt.figure()  
  
# marking the x-axis and y-axis  
axis = plt.axes(xlim =(0, 4),  
                ylim =(-2, 2))  
  
# initializing a line variable  
line, = axis.plot([], [], lw = 3)  
  
# data which the line will  
# contain (x, y)  
def init():  
    line.set_data([], [])  
    return line,  
  
def animate(i):  
    x = np.linspace(0, 4, 1000)  
  
    # plots a sine graph  
    y = np.sin(2 * np.pi * (x - 0.01 * i))  
    line.set_data(x, y)  
      
    return line,  
  
anim = FuncAnimation(fig, animate,  
                    init_func = init,  
                    frames = 200,  
                    interval = 20,  
                    blit = True)  
  
anim.save('continuousSineWave.mp4',  
          writer = 'ffmpeg', fps = 30)


输出:




相关用法


注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 Matplotlib.animation.FuncAnimation class in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。