📜  matplotlib animate (1)

📅  最后修改于: 2023-12-03 15:02:54.064000             🧑  作者: Mango

Matplotlib动态绘图(Animate)

Matplotlib是Python中最流行的绘图库之一,它可以创建各种静态图表。然而,Matplotlib也提供了一个功能强大的动画工具——Animate,使得我们可以创建动态的数据可视化图形。

如何使用Matplotlib Animate

Matplotlib Animate具体实现由FuncAnimation类实现。要使用Matplotlib Animate,需要完成以下步骤:

  1. 导入必要的库和函数。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
  1. 定义initupdate函数。其中,init函数用于在图形上初始化一些东西,例如定义坐标轴标签等;update函数用于更新图形显示的数据。这两个函数都需要返回Artist对象的元组或列表。在update函数中,frames参数用于定义需要动态显示的数据,它可以是Python的迭代器,也可以是整数。
def init():
    # 初始化图形
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1.2, 1.2)
    ax.set_xlabel('X軸標籤')
    ax.set_ylabel('Y軸標籤')
    line.set_data([], [])
    return line,

def update(frame):
    # 更新数据
    xdata.append(frame)
    ydata.append(np.sin(frame))
    line.set_data(xdata, ydata)
    return line,
  1. 创建动画。使用FuncAnimation类创建动画,并指定init_funcupdate函数,同时可以设置动画的帧数、帧时间等参数。生成的动画可以通过HTML对象嵌入到Jupyter Notebook中。
fig, ax = plt.subplots()
line, = ax.plot([], [], 'r-', lw=2)
xdata, ydata = [], []

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True, interval=50)
plt.show()

# 嵌入Jupyter Notebook中
from IPython.display import HTML
HTML(ani.to_jshtml())
示例
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def init():
    """初始化图形"""
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1.2, 1.2)
    ax.set_xlabel('X軸標籤')
    ax.set_ylabel('Y軸標籤')
    line.set_data([], [])
    return line,

def update(frame):
    """更新数据"""
    xdata.append(frame)
    ydata.append(np.sin(frame))
    line.set_data(xdata, ydata)
    return line,

fig, ax = plt.subplots()
line, = ax.plot([], [], 'r-', lw=2)
xdata, ydata = [], []

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True, interval=50)

plt.show()

# 嵌入Jupyter Notebook中
from IPython.display import HTML
HTML(ani.to_jshtml())

animation.gif

在这个简单的示例中,我们使用Matplotlib Animate动态绘制了正弦函数的图形。每帧持续50毫秒,一共绘制了128帧,构成了一个流畅的动画效果。