栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python:matplotlib-循环,清除并显示同一图上的不同图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:matplotlib-循环,清除并显示同一图上的不同图

在matplotlib中创建动画基本上有两种方法

互动模式

使用打开更多互动功能

plt.ion()
。即使
show
尚未调用,也会创建一个图。可以通过调用
plt.draw()
或为动画更新图
plt.pause()

import matplotlib.pyplot as pltx = [1,1]y = [1,2]fig, (ax1,ax2) = plt.subplots(nrows=2, sharex=True, sharey=True)line1, = ax1.plot(x)line2, = ax2.plot(y)ax1.set_xlim(-1,17)ax1.set_ylim(-400,3000)plt.ion()for i in range(15):    x.append(x[-1]+x[-2])    line1.set_data(range(len(x)), x)    y.append(y[-1]+y[-2])    line2.set_data(range(len(y)), y)    plt.pause(0.1)plt.ioff()    plt.show()

功能动画

Matplotlib提供了一个动画子模块,该子模块简化了动画的创建,并允许轻松地保存它们。与上面相同,使用

FuncAnimation
如下所示:

import matplotlib.pyplot as pltimport matplotlib.animationx = [1,1]y = [1,2]fig, (ax1,ax2) = plt.subplots(nrows=2, sharex=True, sharey=True)line1, = ax1.plot(x)line2, = ax2.plot(y)ax1.set_xlim(-1,18)ax1.set_ylim(-400,3000)def update(i):    x.append(x[-1]+x[-2])    line1.set_data(range(len(x)), x)    y.append(y[-1]+y[-2])    line2.set_data(range(len(y)), y)ani = matplotlib.animation.FuncAnimation(fig, update, frames=14, repeat=False)   plt.show()

下面是一个使频率和功率谱变化的正弦波动画的示例:

import matplotlib.pyplot as pltimport matplotlib.animationimport numpy as npx = np.linspace(0,24*np.pi,512)y = np.sin(x)def fft(x):    fft = np.abs(np.fft.rfft(x))    return fft**2/(fft**2).max()fig, (ax1,ax2) = plt.subplots(nrows=2)line1, = ax1.plot(x,y)line2, = ax2.plot(fft(y))ax2.set_xlim(0,50)ax2.set_ylim(0,1)def update(i):    y = np.sin((i+1)/30.*x)    line1.set_data(x,y)    y2 = fft(y)    line2.set_data(range(len(y2)), y2)ani = matplotlib.animation.FuncAnimation(fig, update, frames=60, repeat=True)  plt.show()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号