Python绘制动态图,python 动态绘图
本文主要介绍利用python多线程实现动态图形绘制。文章基于Python的相数据,扩展了动态图绘制的相关内容,具有一定的参考价值,有需要的朋友可以参考一下。
00-1010 1.背景2。第一步。用matplotlib画动态图2。创建一个线程来更新数据3。代码框架
目录
在某些情况下,当我们面对实时更新的数据时,我们希望它能够在一个窗口中可视化,实时更新,便于我们观察数据的变化,从而进行数据分析,例如,绘制音频波形,绘制动态曲线等。下面介绍如何使用matplotlib结合多线程绘制动态图,希望对有需要的朋友有所帮助。
最近,遇到的场景:正好在研究人工智能中的遗传算法,并用它来解决TSP问题。了解这个算法的朋友都知道,这个算法就是通过不断的迭代来寻找适应度大的最优解。为了了解迭代过程中适应度的变化,希望实时更新迭代过程中的适应度,并可视化(数据量不断增加)。
直接上图:
一、背景
二、步骤
工具:matplotlib .动画
1、使用matplotlib绘制动态图
穿线
2、创建一个线程用于更新数据
# Author:浅如清风cyf
#日期: 2020/12/11
导入线程
将matplotlib.pyplot作为plt导入
将matplotlib.animation作为动画导入
将matplotlib.lines作为行导入
将numpy作为np导入
CHUNK=2048 #初始数据卷
Data=np.random.normal (0,1,chunk) #存储绘制图像的数据,数据类型可以是列表。
#定义画布
图=plt.figure()
ax=plt.subplot(111,ylim=(0,5))
线=线。Line2D([],[]) #画一条直线
#初始化图像
定义plot_init():
ax.add_line(line)
返回行,#必须是逗号,否则将报告错误(type error :“line2d”对象不可迭代)
#更新图像(动画会不断调用该函数刷新图像,实现动态图形的效果)
定义绘图_更新(一):
全局数据# data是一个全局变量。
Data_copy=data.copy() #为了避免绘制图像时由于线程不同步导致采集到的数据被更新,这里复制了一份数据的副本,否则绘制图像时X和Y的数据维度可能不相等。
X _ data=np.arange (0,data _ copy.shape [0],1) # X轴根据Y轴数据自动生成(可根据需要修改)
Ax.set _ xlim (0,data _ copy.shape [0]) #横坐标范围(横坐标的范围和刻度可以根据数据长度更新)
Ax.set _ title (title ,fontsize=8) #设置标题
Line.set_xdata(x_data) #更新一行的数据
Line.set_ydata(data_copy) #更新一行的数据
# Headline(如果有多个子图,可以为它们设置标题)
plt.suptitle(Suptitle ,fontsize=8)
#重新渲染子图
Ax.figure.canvas.draw() #必须添加这行代码来更新标题和坐标!
返回行,#必须是逗号,否则将报告错误(type error :“line2d”对象不可迭代)
#画一个动态图
ani=animation . func animation(fig,# canvas
Plot_update,#图像更新
Init_func=plot_init,#图像初始化
帧数=1,
间隔=30,#图像更新间隔
blit=True)
#数据更新功能
def dataUpdate_thead():
全局数据
#为了方便理解代码,这里生成的是正态分布的随机数据。
而True: #为了方便测试,保持数据更新。
data=np.random.normal(0,1,CHUNK)
#为数据更新功能创建一个单独的线程,并与图像绘制线程同时执行。
ad_rdy_ev=线程。事件()
Ad_rdy_ev.set() #设置要运行的线程
t=threading . thread(target=data Update _ thead,args=()# Update data,参数描述:target是线程需要执行的函数,args是传递给函数的参数)
t.daemon=True
T.start()
Plt.show() #显示图像(0,1,CHUNK)
#为数据更新功能创建一个单独的线程,并与图像绘制线程同时执行。
ad_rdy_ev=线程。事件()
Ad_rdy_ev.set() #设置要运行的线程
t=threading . thread(target=data Update _ thead,args=()# Update data,参数描述:target是线程需要执行的函数,args是传递给函数的参数)
t.daemon=True
T.start()
Plt.show() #显示图像
效果:
关于python多线程动态图形绘制的这篇文章到此为止。关于python动态图绘制的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。