Python绘制动态图,python 动态绘图

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: