相关文章推荐
任性的刺猬  ·  Unable to create ...·  1 年前    · 
睿智的酸菜鱼  ·  Android Data ...·  1 年前    · 
# 获取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 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绘制简单折线图
现在我们希望实时更新这条曲线。现在采用每50ms更新一次的策略。
话不多说,先上代码
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from window import Ui_
                                    类FFT_Plot():def __init__(self,win,nSamples,aData,sRate,wFunction,zStart = 0):self.nSamples = nSamples    # Number of Sample must be a 2^n powerself.aData = aData          # Amplitude data arrayself.sR...
                                    python读取串口并使用 pyqtgraph 绘制获取的数据。
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import serial
import time
import csv
global data_display
app = QtGui.QApplication([])
p = pg.plot()
                                    这个类其实是asammdf gui里的,稍微做了下修改,我要实现是显示datetime类型的时间,由于pyqtgraph中的AxisItem支持数字型,所以,绘制的时候是不能传datetime类型的,只能传时间戳,然后刻度显示的字符串可以由时间戳转成datetime样式的字符串,具体实现如下。其实就加了个datetime格式,然后把values转成datetime再转成str,绘制数据传的还是时间戳。这里主要是借鉴一下自定义坐标轴的实现思路了。
                                    在统计图表中,使用时间作为某一坐标轴的情况非常常见,比如,常见的一年间月度销售统计,财务统计等等。在QChart中提供了日期时间坐标轴QDateTimeAxis类可以方便地将日期和时间添加到图表的坐标轴。...
                                    1、需要将时间字符串转换成datetime类型,语法:data[‘time'] = pd.to_datetime(data[‘time'])2、将时间列设置成索引列data.set_index(‘time')3、画图分两种(1) matplotlib.pyplot方式打印某一列数据,直接data[‘some_columns'].plot(),会自动将时间作为横坐标(2) pycharts方式fro...
                                    PYQT5+pyqtgraph 2d绘图实时刷新(坐标系跟着曲线一起移动,且可以查看绘制历史)的解决方法效果图一、原理二、代码思路1.引入变量i来记录每一次更新2.固定坐标轴大小,并实时更新3缺点总结
PYQT5中使用pyqtgraph绘制实时2d曲线图时,希望坐标轴随着曲线一起移动,并可以查看历史绘制的曲线,官方demo有移动坐标轴的案例,但是不可拖动查看历史图像。
pyqtgraph中有一个用于定位坐标长度的函数
tdplot.setXRange(0 , 200)
如这个函数,
                                    如何把x-axis转化为string可以看下stackoverflow上的回答:点这里下面是把x-axis转化为时间格式的字符串的AxisItem源码:class DateAxis(pg.AxisItem):
    def tickStrings(self, values, scale, spacing):
        strns = []
        if not values: