把pyqtgraph图表嵌入pyqt中

文章目录

    • pyqtgraph简介
    • pyqtgraph图形在pyqt中展示
    • 完整代码
    • 运行截图

pyqtgraph简介

pyqtgraph是python的一个绘图库,和鼎鼎大名的Matplotlib库比较起来,有着以下特点:
优势:
1、pyqtgraph运行速度很快,特别是数量大的时候
2、pyqtgraph在交互上非常好,例如在图形中滑动鼠标滚轮放大和缩小等
3、pyqtgraph和qt更亲和
不足
1、pyqtgraph不如Matplotlib功能完整和成熟

pyqtgraph图形在pyqt中展示

这里简单展示一个条形图,文章重点在如何在pyqt中嵌入pyqtgraph图形,pyqtgraph用法不做过多介绍,如下面的代码所示我直接继承的PyQt的QMainWindow类,然后像放置其他pyqt控件一样,将图表对象放置在QMainWindow窗口上最简单的理解就是,你可以像放置按钮一样,把图表对象直接放置在窗口上。

完整代码

import numpy as np
import sys
import pyqtgraph as pg
from PyQt5.Qt import QMainWindow, QApplication


class CtxPlotBar(QMainWindow):
    def __init__(self):
        super().__init__()
        self.plot_bar()

    def plot_bar(self):
        res = [[1, 2, 3, 4, 5, 6, 7, 8, 9]]
        self.setWindowTitle('条形图')
        view = pg.GraphicsLayoutWidget()
        self.w1 = view.addPlot()
        # 单组数据即可,x为横坐标
        x = np.arange(len(res[0]))
        bar_count = 0
        for item in res:
            y = []
            for value in item:
                y.append(value)
            bg = pg.BarGraphItem(x=x + bar_count, height=y, width=0.3, brush='r')
            self.w1.addItem(bg)
            bar_count += 0.33
        self.setCentralWidget(view)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = CtxPlotBar()
    demo.show()
    sys.exit(app.exec_())

运行截图

在这里插入图片描述
鼠标放大后
在这里插入图片描述