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动态刷新数据(横坐标为时间)的主要内容,如果未能解决你的问题,请参考以下文章

pyqtgraph动态刷新数据(横坐标为时间)

PyQtGraph横坐标刷新时间

echarts自定义折线图横坐标时间间隔踩坑总结

excel散点图中 横坐标是1/300、1/50之类的分数,可是画出来的横坐标为整数。请问怎么设置呢

excel做散点图中横坐标显示怎样使用科学计数法显示

excel散点图纵坐标范围更改