pyqtgraph动态刷新数据(横坐标为时间)
Posted 王张飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqtgraph动态刷新数据(横坐标为时间)相关的知识,希望对你有一定的参考价值。
PyQtGraph横坐标刷新时间
效果:
Py代码:
import pyqtgraph as pg
import numpy as np
import psutil
import datetime
# 获取CPU使用率的定时回调函数
def get_cpu_info():
global time_flag1,time_flag1_1,time_flag1_2,time_flag1_3
try: time_flag1_3 = time_flag1_2
except: time_flag1_3 = 0
try: time_flag1_2 = time_flag1_1
except: time_flag1_2 = 0
try:
time_flag1_1 = time_flag1
print(time_flag1)
except: time_flag1_1 = 0
# xax = p1.getAxis('left') # 改成坐标轴y
time_flag1 = datetime.datetime.now().strftime('%H:%M:%S.%f') # 含微秒的日期时间,来源 比特量化
xax = p.getAxis('bottom') # 坐标轴x
ticks = [list(zip(range(4), (time_flag1_3, time_flag1_2, time_flag1_1, time_flag1)))] # 声明五个坐标,分别是
xax.setTicks(ticks)
if len(data_list) < historyLength:
data_list.append(float(5))
else:
data_list[:-1] = data_list[1:] # 前移
data_list[-1] = float(5)
plot.setData(data_list,pen='g')
if __name__ == '__main__':
data_list = []
# pyqtgragh初始化
# 创建窗口
app = pg.mkQApp() # 建立app
win = pg.GraphicsWindow() # 建立窗口
win.setWindowTitle(u'pyqtgraph 实时波形显示工具')
win.resize(800, 500) # 小窗口大小
# 创建图表
historyLength = 4 # 横坐标长度
p = win.addPlot() # 把图p加入到窗口中
p.showGrid(x=True, y=True) # 把X和Y的表格打开
# p.setRange(xRange=[0, historyLength], yRange=[0, 100], padding=0)
p.setLabel(axis='left', text='CPU利用率') # 靠左
p.setLabel(axis='bottom', text='时间')
p.setTitle('CPU利用率实时数据') # 表格的名字
plot = p.plot()
timer = pg.QtCore.QTimer()
timer.timeout.connect(get_cpu_info) # 定时刷新数据显示
timer.start(100) # 多少ms调用一次
app.exec_()
程序优化后:
import pyqtgraph as pg
import numpy as np
import psutil
import datetime
import math
class Pyqtgraph_Graph_1(): # 创建Circle类,Circle为类名
def __init__(self):
self.History_Length = 4 # 横坐标长度
self.Data_List = []
self.Time_Axis = [v for v in range(self.History_Length)]
# print(self.Time_Axis)
self.x = 0
# 获取CPU使用率的定时回调函数
def YBS_DEBUG_MONITOR_DISPLAY(self):
self.Time_Axis_Temp = self.Time_Axis.pop(0)
self.Time_Axis.append(self.Time_Axis_Temp)
print(self.Time_Axis)
# xax = p1.getAxis('left') # 改成坐标轴y
self.Time_Axis[-1] = datetime.datetime.now().strftime('%H:%M:%S.%f') # 含微秒的日期时间,来源 比特量化
xax = p.getAxis('bottom') # 坐标轴x
ticks = [list(zip(range(self.History_Length), (self.Time_Axis)))] # 声明五个坐标,分别是
xax.setTicks(ticks)
# xax.rotate(90)
self.x = self.x + 1
if len(self.Data_List) < self.History_Length:
self.Data_List.append(math.sin(self.x))
else:
self.Data_List[:-1] = self.Data_List[1:] # 前移
self.Data_List[-1] = math.sin(self.x)
plot.setData(self.Data_List,pen='g')
if __name__ == '__main__':
# pyqtgragh初始化
# 创建窗口
app = pg.mkQApp() # 建立app
win = pg.GraphicsWindow() # 建立窗口
win.setWindowTitle(u'pyqtgraph 实时波形显示工具')
win.resize(800, 500) # 小窗口大小
Pyqtgraph_Graph_Main = Pyqtgraph_Graph_1()
# 创建图表
# History_Length = 4 # 横坐标长度
p = win.addPlot() # 把图p加入到窗口中
p.showGrid(x=True, y=True) # 把X和Y的表格打开
# p.setRange(xRange=[0, History_Length], yRange=[0, 100], padding=0)
p.setLabel(axis='left', text='CPU利用率') # 靠左
p.setLabel(axis='bottom', text='时间')
p.setTitle('CPU利用率实时数据') # 表格的名字
plot = p.plot()
timer = pg.QtCore.QTimer()
timer.timeout.connect(Pyqtgraph_Graph_Main.YBS_DEBUG_MONITOR_DISPLAY) # 定时刷新数据显示
timer.start(100) # 多少ms调用一次
app.exec_()
以上是关于pyqtgraph动态刷新数据(横坐标为时间)的主要内容,如果未能解决你的问题,请参考以下文章