Python3.x+pyqtgraph实现数据可视化教程

时间:2021-05-22

1、pyqtgraph库数据可视化效果还不错,特别是窗体程序中图像交互性较好;安装也很方便,用 pip 安装。

2、在Python中新建一个 .py 文件,然后写入如下代码并执行可以得到官方提供的很多案例(含代码),出现如下界面图像:

import pyqtgraph.examples
pyqtgraph.examples.run()

图1

图2

图3

4、程序默认是黑色背景,这个是可以修改的。比如,在程序的开头部分写入如下代码就可以修改背景:

pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')

更多说明,见 pyqtgraph 官网:http://box1.currentText()) v5_wlayout.removeWidget(self.tmp_plt) self.tmp_plt = plt_show(num) v5_wlayout.addWidget(self.tmp_plt) print("*****显示打印*****")if __name__ == '__main__': cgitb.enable(format="text") app = QApplication(sys.argv) win = Qt_Test_Frame() sys.exit(app.exec_())

处理把列表文件转成字典与绘图

# pyqt5_graph.py 文件名 import pyqtgraph as pgfrom TmpData import _read_data, wind_mach_chooicecolour = ["r", "g", "b"]yp_list = ["叶片1", "叶片2", "叶片3"]def _data_to_dict(): mydict = {} for my_vars, i in zip(_read_data(), range(len(_read_data()))): tmp_dict = {} for var, j in zip(my_vars, range(len(my_vars))): tmp_dict[var[0]] =var[1] mydict[i] = tmp_dict return mydictdef plt_init(): # 绘图初始化 pg.setConfigOption("background", "w") plt = pg.PlotWidget() plt.addLegend(size=(150, 80)) plt.showGrid(x=True, y=True, alpha=0.5) return pltdef plt_show(num): # 传绘制的新图 mydict = _data_to_dict() pg.setConfigOption("background", "w") plt = pg.PlotWidget() plt.addLegend(size=(150, 80)) plt.showGrid(x=True, y=True, alpha=0.5) for i in num.split(","): i = int(i)-1 plt.plot(x=list(mydict[i].keys()), y=list(mydict[i].values()), pen=colour[i], name=yp_list[i]) return pltif __name__ == '__main__': _data_to_dict() pass

模拟给其它文件传指定数据

# TmpData.py 文件名import osimport numpy as npfile_path = os.path.join(os.getcwd(), "风机采集信号数据\\")wind_field = ["风场1", "风场2", "风场3"]wind_machine = {"风场1":["大别山", "天目山"], "风场2":["昆仑山", "三清山"], "风场3":["五指山", "火焰山"]}wind_blade = ["X-20Hz", "X-1K", "Y-20Hz", "Y-1K"]signal_type = ["包络", "振动"]tmp_time_list = ["20190501", "20190502", "20190504", "20190508", "20190515"]def wind_mach_chooice(val): return wind_machine[val]def _read_data(): file_list = os.listdir(file_path) file_list = [var for var in file_list if var.split(".")[1] == "csv"] a = [] for var in file_list: tmp = os.path.join(file_path, var) rd_file = np.loadtxt(tmp, delimiter=",", usecols=(0, 1)) a.append(rd_file) return a[0], a[1], a[2]

多线程管理

因为程序运行时间久,主界面就会出现假死的状态,要引用多线程

# Mythreading.py 文件名from PyQt5.QtCore import QThread, pyqtSignalclass RunThread(QThread): counter_value = pyqtSignal(int) def __init__(self, target, args, name=""): QThread.__init__(self) self.target = target self.args = args self.is_running = True def run(self): #print("starting",self.name, "at:",ctime()) self.res = self.target(*self.args) def stop(self): # 负责停止线程 self.terminate()

关于QT异常直接退出没有报错的情况,查bug比较麻烦

import cgitb# 这句放在所有程序开始前,这样就可以正常打印异常了cgitb.enable(format="text")

这些天本人身体不舒服,但还是把做完的这个分享出来,有些细节没有具体说明,下次身体好点,再单独拿出来分享,累了,晚安!

以上这篇Python3.x+pyqtgraph实现数据可视化教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章