python画图|曲线动态输出基础教程

在前述学习过程中,已经掌握基本的曲线图像画法,并尝试探索过3D动画基础教程。

相关文章可以通过下述链接直达:

python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客

python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博客

在此基础上,我们尝试对曲线进行动态输出,效果如下:

cfed9ef9a8ee4ab987c5c944fe09aa3e.gif

图1

【1】官网教程

打开下述链接,直达官网教程:

Animated line plot — Matplotlib 3.9.2 documentation

教程简洁高效,为此进行了注解。

【2】代码解读

首先引入关键模块numpy和matplotlib:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块

import matplotlib.animation as animation #引入动画制作模块

然后定义画图和变量:

fig, ax = plt.subplots() #定义画图

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量

之后定义一个函数,用于动态输出Y轴数值:

def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,

然后调用动画模块制作动画:

ani = animation.FuncAnimation( #绘制动画
    fig, animate, interval=20, blit=True, save_count=50)

最后直接输出图形:

plt.show() #输出图形

【3】代码改写

实际上,上述代码输出的结果不能直接保存。但程序上自带了一些注释:

# To save the animation, use e.g.
#
# ani.save("movie.mp4")
#
# or
#
# writer = animation.FFMpegWriter(
#     fps=15, metadata=dict(artist='Me'), bitrate=1800)
# ani.save("movie.mp4", writer=writer)

为此我们尝试直接新增一行代码:

ani.save("movie.mp4")

实际结果却是报错:

e2e4ab2c3d4a4a5c9505b9a8756f9457.png

图2

经过尝试,改为下述代码:

ani.save('animations.gif')

可以发现输出成功,没有报错。

【4】代码优化

为了优化表达效果,增加输出曲线,定义line1:

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量
line1, = ax.plot(x, np.cos(x)) #定义因变量

然后自定义函数跟随更新:

def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    line1.set_ydata(np.cos(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,line1

输出结果更新为:

35ae251dfbb5479f91cf2dc6c162e2f1.gif

图3

此时的完整代码为:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块

import matplotlib.animation as animation #引入动画制作模块

fig, ax = plt.subplots() #定义画图

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量
line1, = ax.plot(x, np.cos(x)) #定义因变量


def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    line1.set_ydata(np.cos(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,line1


ani = animation.FuncAnimation( #绘制动画
    fig, animate, interval=20, blit=True, save_count=50)
#ani.save('animation.MP4', writer='imagemagick') #保存动画
ani.save('animations.gif') #保存动画
# To save the animation, use e.g.
#
# ani.save("movie.mp4")
#
# or
#
# writer = animation.FFMpegWriter(
#     fps=15, metadata=dict(artist='Me'), bitrate=1800)
# ani.save("movie.mp4", writer=writer)
#writer = animation.FFMpegWriter(
     #fps=15, metadata=dict(artist='Me'), bitrate=1800)
#ani.save("movie.mp4", writer=writer)


plt.show() #输出图形

【5】总结

学习了使用python实线动画曲线输出的技巧,并且掌握了gif动画保存技巧和多条曲线同时输出技巧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值