pyqtgraph 实现几个功能

文章目录

  • 实现功能
    • - 使用pyqtgraph实现设定标题
    • - 设定数据只更新最新的1000个
    • - 一个图中绘制两条曲线
  • 准备工作
    • 采用嵌入到pyqt5当中的方案
    • Qtimer 的方案:
  • 代码
    • 设定标题
    • 设定两条曲线
    • 仅更新最新的1000个
    • 更新的代码:
    • 实现的结果:
  • 设定曲线的点的样式
    • 代码
    • 测试结果

实现功能

- 使用pyqtgraph实现设定标题

- 设定数据只更新最新的1000个

- 一个图中绘制两条曲线

准备工作

采用嵌入到pyqt5当中的方案

所以我们得到绘图的接口是self.graphicsView

        self.p= self.graphicsView
        self.p2=self.graphicsView_2
        self.p3 = self.graphicsView_3

之后我们对绘图的接口进行一定的配置:

  self.p.setDownsampling(mode='subsample')
        self.p2.setDownsampling(mode='subsample')


        self.p.setClipToView(True)
        self.p2.setClipToView(True)
        # self.p3.setClipToView(True)

        self.p2.setLabel("left","value",units='V')
        self.p2.setLabel("bottom","Timestamp",units='us')
        self.p2.setTitle('hello title')
        # self.p3.setLabel("left","valuess",units='us')
        # self.p3.setLabel("bottom","Timestamp",units='us')


        # self.p.setRange(xRange=[-100, 0])
        # self.p.setLimits(xMax=0)
        self.curve = self.p.plot()
        self.curve2 = self.p2.plot(pen=(0,255,255))
        self.curve2sub= self.p2.plot(pen=(255,0,0))
        
        

Qtimer 的方案:

https://blog.csdn.net/weixin_42066185/article/details/81569869?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159196182719724835839288%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=159196182719724835839288&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_blog_default-1-81569869.pc_v2_rank_blog_default&utm_term=Qtimer

代码

使用qttimer实现绘图更新。timeout后执行下面的函数

设定标题

        self.p2.setTitle('hello title')

设定两条曲线

        self.curve2 = self.p2.plot(pen=(0,255,255))
        self.curve2sub= self.p2.plot(pen=(255,0,0))

仅更新最新的1000个

datatmp1=self.data3[self.ptr3-1000:self.ptr3-1] # 

更新的代码:

  def update(self):
        # global data3, ptr3, ptrtmp
        # data3[ptr3] = np.random.normal()
        print('we are in here')
        self.data3[self.ptr3] = self.triy[self.ptrtmp]
        # self.p3.clear()
        datatmp1=self.data3[self.ptr3-1000:self.ptr3-1] # 显示最新的10000个数据

        print(type(self.data3))
        self.ptrtmp += 1
        if self.ptrtmp == 99:
            self.ptrtmp = 0
        self.ptr3 += 1
        if self.ptr3 >= self.data3.shape[0]:
            tmp = self.data3
            self.data3 = np.empty(self.data3.shape[0] * 2)
            self.data3[:tmp.shape[0]] = tmp

        self.curve.setData(datatmp1)
        # self.p.setRange(xRange=[self.ptr3-50, self.ptr3+50])

        # self.curve.setPos(self.ptr3-1000,0)

        self.curve2.setData(self.data3[:self.ptr3])
        self.curve2sub.setData(self.data3[:self.ptr3]+1)
        # self.scatter.setData(y=self.data3[:self.ptr3],)
        print('before')
        print('size data3',)

实现的结果:

pyqtgraph 实现几个功能_第1张图片

设定曲线的点的样式

代码

          self.curve = self.p.plot(sysbol='t',symbolSize=7)
        self.curve2 = self.p2.plot(pen=(0,255,255))
        self.curve2sub= self.p2.plot(pen=(255,0,0))

测试结果

pyqtgraph 实现几个功能_第2张图片

pyqtgraph 实现几个功能_第3张图片

你可能感兴趣的:(pyqt5,pyqtgraph)