# @Time : 2023/5/12 8:56
# @Author : Ecoboy
# @File : show_signal.py
# Code statement :
import pyqtgraph as pg
import numpy as np
from pyqtgraph.Qt import QtGui
import pandas as pd
from collections import deque
def get_data_from_cvs():
data = pd.read_csv("230429_105821.csv") # csv文件名
return data
def update():
global ptr1
curve1.setData(data_channel1[ptr1:ptr1 + end_signal])
curve2.setData(data_channel2[ptr1:ptr1 + end_signal])
curve3.setData(data_channel3[ptr1:ptr1 + end_signal])
curve4.setData(data_channel4[ptr1:ptr1 + end_signal])
#x轴随着数据的前进而前进
curve1.setPos(ptr1, 0)
curve2.setPos(ptr1, 0)
curve3.setPos(ptr1, 0)
curve4.setPos(ptr1, 0)
ptr1 += 1
if __name__ == '__main__':
win = pg.GraphicsLayoutWidget(size=(1200, 600), show=True)
win.setWindowTitle('信号监测')
p1 = win.addPlot(0, 0, title="channel1") # 添加Plot显示窗体
p2 = win.addPlot(1, 0, title="channel2")
p3 = win.addPlot(2, 0, title="channel3")
p4 = win.addPlot(3, 0, title="channel4")
p1.showGrid(x=True, y=True)
p2.showGrid(x=True, y=True)
p3.showGrid(x=True, y=True)
p4.showGrid(x=True, y=True)
end_signal = 200 # 一个折线图一次性出现几个信号
ptr1 = 0 #ptr1是x轴原点位置,这里定义了update函数才能使用
data = get_data_from_cvs() #这里的data数据类型是pandas.core.frame.DataFrame数据类型,后面可以直接根据列名获取一列数据
data_channel1 = np.array(data['ch1'])
data_channel2 = np.array(data['ch5'])
data_channel3 = np.array(data['ch9'])
data_channel4 = np.array(data['ch15'])
curve1 = p1.plot(data_channel1[ptr1:end_signal])
curve2 = p2.plot(data_channel2[ptr1:end_signal])
curve3 = p3.plot(data_channel3[ptr1:end_signal])
curve4 = p4.plot(data_channel4[ptr1:end_signal])
# 利用时间函数使图像动起来,每隔一段时间进行一次更新
timer = pg.QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50) #数据更新速度
QtGui.QApplication.instance().exec_()
pyqt读取csv文件并对多道数据进行动态展示
于 2023-05-12 15:43:40 首次发布
该Python代码使用pyqtgraph库实现从CSV文件读取数据并实时绘制四个通道的信号图。每个通道的数据随时间滚动更新,显示在四个独立的图表中,更新间隔为50毫秒。数据来源于230429_105821.csv文件,选取特定列(ch1,ch5,ch9,ch15)进行绘制。
摘要由CSDN通过智能技术生成