pyqtgragh

您所在的位置:网站首页 动态数据变化 pyqtgragh

pyqtgragh

2023-08-01 10:51| 来源: 网络整理| 查看: 265

pyqtgragh可以实现动态实时绘图,非常的强大!所以学习一下!

文章目录 环境准备绘图实战使用PyQtGraph绘制折线图绘制静态数据的单条曲线绘制静态数据的双曲线(分别绘制,不在同一个图表中)绘制静态数据的双曲线(在同一个图表中)绘制静态数据的双曲线(在同一个窗口,不同的图标中) 绘制动态实时图表数据绘制单条动态曲线 绘制动态数据的双曲线(在同一个窗口,不同的图标中)数据来源绘制动态双曲线

环境准备 pip install pyqtgraph pip install PyQt5 绘图实战

创建静态数据:

import pyqtgraph as pg import numpy as np a = np.random.random(100) b = np.random.random(50) 使用PyQtGraph绘制折线图 绘制静态数据的单条曲线 import pyqtgraph as pg import numpy as np a = np.random.random(100) def pg_plot(): app = pg.QtGui.QApplication([]) pg.plot(a,title='Irvingao') app.exec_() pg_plot()

在这里插入图片描述

绘制静态数据的双曲线(分别绘制,不在同一个图表中) import pyqtgraph as pg import numpy as np a = np.random.random(100) b = np.random.random(50) def pg_plot(): app = pg.QtGui.QApplication([]) pg.plot(a,title='a 静态数据的双曲线绘制') pg.plot(b, title='b 静态数据的双曲线绘制') app.exec_() pg_plot()

在这里插入图片描述

绘制静态数据的双曲线(在同一个图表中)

如果需要使用plot()方法在同一个图形中绘制多个数据,需要先将pyqtgraph的plot()方法实例化,然后再使用实例化后的plot的plot()方法进行图形绘制:

import pyqtgraph as pg import numpy as np a = np.random.random(100) b = np.random.random(50) def pg_plot_add(): plot = pg.plot(title='同一个图表中绘制两条曲线') plot.plot(a,pen='g') plot.plot(b,pen='r') pg.QtGui.QGuiApplication.exec_() pg_plot_add()

在这里插入图片描述

绘制静态数据的双曲线(在同一个窗口,不同的图标中)

过pyqtgraph模块的GraphicsWindow方法,我们可以创建一个空的图形窗口,然后使用其addplot()方法添加图形:

def pg_windows_addplot(): win = pg.GraphicsWindow(title="在同一个窗口,不同的图标中绘制双曲线") plot1 = win.addPlot(title='a 窗口绘制图形') plot1.plot(a) plot2 = win.addPlot(title='b 窗口绘制图形') plot2.plot(b) pg.QtGui.QApplication.exec_() pg_windows_addplot()

在这里插入图片描述

绘制动态实时图表

pyqtgraph的绘图数据主要是通过setData()这个方法来转化为图形。我们可以设置一个定时器,每隔一个时间重新调用setData()方法对图形数据进行设置,就能够实现实时的数据可视化呈现。

数据

采用获取实时CPU的利用率数据作为数据来源:

def get_cpu_info(): cpu = "CPU:%0.2f" % psutil.cpu_percent(interval=1) + "%" return cpu 绘制单条动态曲线

这里通过每秒获取CPU的利用率来进行实时绘图:

import pyqtgraph as pg import numpy as np import psutil # 获取CPU使用率的定时回调函数 def get_cpu_info(): cpu = "%0.2f" % psutil.cpu_percent(interval=1) data_list.append(float(cpu)) print(float(cpu)) 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 = 100 # 横坐标长度 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(1000) # 多少ms调用一次 app.exec_()

在这里插入图片描述

在这里插入图片描述

绘制动态数据的双曲线(在同一个窗口,不同的图标中)

绘制双曲线的方式可以参考静态图表的绘制,在这里仅演示在同一窗口中绘制两条动态曲线。

数据来源

采用获取实时CPU的利用率和内存占用率数据作为数据来源:

def get_cpu_info(): cpu = "CPU:%0.2f" % psutil.cpu_percent(interval=1) + "%" memory = "MEM:%0.2f" % psutil.virtual_memory().percent(interval=1) + "%" return cpu, memory 绘制动态双曲线 import pyqtgraph as pg import numpy as np import psutil # 获取CPU使用率 def get_cpu_info(): cpu = "%0.2f" % psutil.cpu_percent(interval=1) cpu_data_list.append(float(cpu)) print(float(cpu)) plot1.setData(cpu_data_list,pen='g') memory = "%0.2f" % psutil.virtual_memory().percent memory_data_list.append(float(memory)) print(memory) plot2.setData(memory_data_list,pen='r') if __name__ == '__main__': cpu_data_list = [] memory_data_list = [] # pyqtgragh初始化 # 创建窗口 app = pg.mkQApp() # 建立app win = pg.GraphicsWindow() # 建立窗口 win.setWindowTitle(u'pyqtgraph 实时波形显示工具') win.resize(800, 500) # 小窗口大小 # 创建图表 historyLength = 100 # 横坐标长度 p1 = win.addPlot() # 把图p加入到窗口中 p1.showGrid(x=True, y=True) # 把X和Y的表格打开 p1.setRange(xRange=[0, historyLength], yRange=[0, 100], padding=0) # x轴和y轴的范围 p1.setLabel(axis='left', text='CPU利用率') # 靠左 p1.setLabel(axis='bottom', text='时间') p1.setTitle('CPU利用率实时数据') # 表格的名字 plot1 = p1.plot() p2 = win.addPlot() # 把图p加入到窗口中 p2.showGrid(x=True, y=True) # 把X和Y的表格打开 p2.setRange(xRange=[0, historyLength], yRange=[0, 100], padding=0) p2.setLabel(axis='left', text='内存占用率') # 靠左 p2.setLabel(axis='bottom', text='时间') p2.setTitle('内存占用率实时数据') # 表格的名字 plot2 = p2.plot() timer = pg.QtCore.QTimer() timer.timeout.connect(get_cpu_info) # 定时刷新数据显示 timer.start(1) # 多少ms调用一次 app.exec_()

在这里插入图片描述

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3