pyqtgragh可以实现动态实时绘图,非常的强大!所以学习一下!
pip install pyqtgraph
pip install PyQt5
创建静态数据:
import pyqtgraph as pg
import numpy as np
a = np.random.random(100)
b = np.random.random(50)
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_()