您的位置:首页 > 编程语言 > PHP开发

matplotlib实现根据实时数据动态更新图形

2017-11-22 11:34 2506 查看
一 代码

from time import sleep


from threading importThread


import numpy as np


import matplotlib.pyplot as plt


from matplotlib.widgets importButton




fig, ax = plt.subplots()


#设置图形显示位置


plt.subplots_adjust(bottom=0.2)


#实验数据


range_start, range_end, range_step =0,1,0.005


t = np.arange(range_start, range_end, range_step)


s = np.sin(4*np.pi*t)


l,= plt.plot(t, s, lw=2)


#自定义类,用来封装两个按钮的单击事件处理函数


classButtonHandler:


def __init__(self):


self.flag =True


self.range_s, self.range_e, self.range_step =0,1,0.005


#线程函数,用来更新数据并重新绘制图形


def threadStart(self):


while self.flag:


sleep(0.02)


self.range_s += self.range_step


self.range_e += self.range_step


t = np.arange(self.range_s, self.range_e, self.range_step)


ydata = np.sin(4*np.pi*t)


#更新数据


l.set_xdata(t-t[0])


l.set_ydata(ydata)


#重新绘制图形


plt.draw()


defStart(self, event):


self.flag =True


#创建并启动新线程


t =Thread(target=self.threadStart)


t.start()


defStop(self, event):


self.flag =False




callback =ButtonHandler()


#创建按钮并设置单击事件处理函数


axprev = plt.axes([0.81,0.05,0.1,0.075])


bprev =Button(axprev,'Stop')


bprev.on_clicked(callback.Stop)


axnext = plt.axes([0.7,0.05,0.1,0.075])


bnext =Button(axnext,'Start')


bnext.on_clicked(callback.Start)




plt.show()


二 运行结果



 





大小: 40.6 KB

查看图片附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: