使用matplotlib生成动态图

使用 matplotlib 结合 FuncAnimation 生成动态图

FuncAnimation 是 matplotlib.animation 模块中的一个类,能让我们高效创建动态可视化效果。

代码解释:

  • blit=False:在 FuncAnimation 中,将 blit 参数设置为 False,会导致每次更新时重绘整个图形区域,而不仅仅是更新部分内容。这可以确保坐标轴刻度的更新被正确显示,因为整个图形区域都会被重新绘制。

  • init 函数:

    • ax.set_xlim(0, 2 * np.pi):设置初始 x 轴范围为 [0, 2 * np.pi]。
    • ax.set_ylim(-1, 1):设置初始 y 轴范围为 [-1, 1]。
  • update 函数:

    • xdata.append(frame) 和 ydata.append(np.sin(frame)):添加新的数据点。
    • ax.set_xlim(min(xdata), max(xdata))ax.set_ylim(min(ydata) - 0.1, max(ydata) + 0.1):根据新的数据点更新坐标轴范围。
    • ln.set_data(xdata, ydata):更新数据点的显示。
    • ax.relim():重新计算数据范围的内部表示。
    • ax.autoscale_view():根据重新计算的数据范围调整坐标轴范围和刻度标签。
    • ax.set_xticks(np.linspace(min(xdata), max(xdata), num=5))ax.set_yticks(np.linspace(min(ydata) - 0.1, max(ydata) + 0.1, num=5)):根据新的数据范围手动设置 x 轴和 y 轴的刻度,确保刻度能够反映新的数据范围。

demo 代码:

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

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = ax.plot([], [], 'ro')

def init():
    ax.set_xlim(0, 2 * np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)

    if frame > 2 * np.pi:
        ax.set_xticks(np.linspace(min(xdata), max(xdata), num=10))
    return ln,

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


plt.show()

demo 实例:

在这里插入图片描述

打点图改为线图

上方代码中的

ln, = ax.plot([], [], 'ro')

改为

ln, = ax.plot([], [], 'r-')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PYGC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值