pyqtgraph绘制曲线图(3)

pyqtgraph 绘制动态图,并将其加入到窗体中(GUI)

添加需要的库文件

import numpy as np
import pyqtgraph as pg
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFrame, QGridLayout, QLabel, QVBoxLayout, QPushButton, QHBoxLayout
from PyQt5.QtCore import Qt,QTimer

其中在这里又新添加了一种将pyqtgraph放入窗体的方法,采用QFrame的方式进行实现

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.InitUi()
        self.generate_image()

    def InitUi(self):
        self.setGeometry(200,200,1000,800)
        self.setWindowTitle("实时刷新波形实验")
        self.gridLayout = QGridLayout(self)
        self.frame = QFrame(self)      #创建一个父容器
        self.frame.setFrameShape(QFrame.Panel)   #设置父容器的面板形式
        self.frame.setFrameShadow(QFrame.Plain)  #设置父容器边框阴影。
        self.frame.setLineWidth(2)               #设置父容器边框线宽
        self.frame.setStyleSheet("background-color:rgb(0,255,255);")  #设置表单颜色
        self.label = QLabel(self)
        self.label.setText("波形")
        self.button = QPushButton(self)
        self.button.clicked.connect(self.btnClick)
        self.gridLayout.addWidget(self.frame,0,0,1,2)   #griflayout的使用,将frame容器放在grid得一行
        self.gridLayout.addWidget(self.label,1,0,1,1)   #将label和button,放在grid一行
        self.gridLayout.addWidget(self.button,1,1,1,1)
        self.setLayout(self.gridLayout)

    def generate_image(self):
        verticalLayout = QHBoxLayout(self.frame)   #创建父容器后需要将graph添加到里面,采用QVBoxLaouth或者QHBoxLayout
        win = pg.GraphicsLayoutWidget(self.frame)  #将其显示在frame上
        verticalLayout.addWidget(win)
        p = win.addPlot(title = "动态波形图")
        p.showGrid(x=True,y=True)
        p.setLabel(axis="left",text ="Y Value")
        p.setLabel(axis="bottom",text="X Value")
        p.setTitle("数据分析")
        p.addLegend()

        self.curve1 = p.plot(pen="r",name="y1")
        self.curve2 = p.plot(pen='g',name="y2")

        self.Fs = 1024.0 #采样频率
        self.N = 1024    #采样点数
        self.f0 = 4.0    #信号频率
        self.pha = 0     #初试相位

        self.t = np.arange(self.N) /self.Fs    #时间向量1*1024的矩阵
        print(self.t)
        print(np.arange(self.N))
    def plotData(self):
        self.pha += 10
        self.curve1.setData(self.t,6*np.sin(8*np.pi*self.t+self.pha*np.pi/180.0))
        self.curve2.setData(self.t,6*np.cos(8 * np.pi * self.t + self.pha * np.pi / 180.0))

    def btnClick(self):
        self.button.setText("再次点击退出")
        timer = QTimer(self)
        timer.timeout.connect(self.plotData)
        timer.start(100)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值