【pyqtgraph绘图】在pyqtgraph中绘图

解读pyqtgraph官方API-在pyqtgraph中绘图

参考:html

http://www.pyqtgraph.org/documentation/plotting.htmlapp

在pyqtgraph中绘图

在pyqtgraph中绘制数据有如下几种基本方法:框架

全部这些都将接受控制绘图数据如何解释和显示的相同基本参数:dom

  • x - 可选的X数据; 若是未指定,则将自动生成一系列整数。
  • y - Y数据。
  • pen - 绘制绘图线时使用的笔,当 None 时线不可用 。
  • symbol - 描述用于每一个点的符号形状的字符串。可选地,这也能够是每一个点具备不一样符号的字符串序列。
  • symbolPen - 绘制符号轮廓时使用的笔(或笔的序列)。
  • symbolBrush - 填充符号时使用的画笔(或画笔序列)。
  • fillLevel - 将绘图曲线下的区域填充到此Y值。
  • brush - 在曲线下填充时使用的画笔。

有关这些参数的演示,请参阅“绘图” 示例函数

全部上述函数还返回建立的对象的句柄,容许进一步修改绘图和数据。 布局

绘图类的组织

在显示绘图数据时有几个类被激活。这些类中的大多数都是自动实例化的,但了解它们的组织方式和相互关联是颇有用的。PyQtGraph主要基于Qt的GraphicsView框架 - 若是您还不熟悉它,那么值得一读(但不是必需的)。最重要的是:spa

1)Qt GUI由QWidgets组成,code

2)一个名为QGraphicsView的特殊小部件用于显示复杂的图形,orm

3)QGraphicsItems定义在QGraphicsView中显示的对象。htm

  • 数据类(QGraphicsItem的全部子类)
    • PlotCurveItem - 显示给定x,y数据的绘图线
    • ScatterPlotItem - 显示给定x,y数据的点
    • PlotDataItem - 组合PlotCurveItem和ScatterPlotItem。上面讨论的绘图函数建立了这种类型的对象。
  • 容器类(QGraphicsItem的子类;包含其余QGraphicsItem对象,必须在GraphicsView中查看)
    • PlotItem - 包含用于显示数据的ViewBox以及用于显示轴和标题的AxisItems和标签。这是一个QGraphicsItem子类,所以只能在GraphicsView中使用
    • GraphicsLayout - QGraphicsItem子类,显示项目网格。这用于一块儿显示多个PlotItem。
    • ViewBox - 用于显示数据的QGraphicsItem子类。用户可使用鼠标缩放/平移ViewBox的内容。一般,全部PlotData / PlotCurve / ScatterPlotItem都在ViewBox中显示。
    • AxisItem - 显示轴值,刻度和标签。最经常使用于PlotItem。
  • 容器类(QWidget的子类;能够嵌入在PyQt GUI中)
    • PlotWidget - GraphicsView的子类,显示单个PlotItem。PlotItem提供的大多数方法也能够经过PlotWidget得到。
    • GraphicsLayoutWidget - QWidget子类显示单个GraphicsLayoutItem。GraphicsLayoutItem提供的大多数方法也能够经过GraphicsLayoutWidget得到。
_images / plottingClasses.png

例子效果:

完整代码:

from PyQt5.QtWidgets import QPushButton,QWidget,QApplication,QGridLayout,QListWidget,QLineEdit import pyqtgraph as pg import sys import numpy as np class Example(QWidget): def __init__(self): super(Example, self).__init__() self.initUI() self.linePlot() self.scatterPlot() self.three_curves() def initUI(self): self.setGeometry(400,400,800,620) self.setWindowTitle("pyqtgraph快速入门") ## 建立一些小部件放在顶级窗口中
        btn = QPushButton('press me') text = QLineEdit('enter text') listw = QListWidget() listw.addItems(["aa", "bb", "cc"]) self.gridLayout = QGridLayout(self) ## 将部件添加到布局中的适当位置
 self.gridLayout.addWidget(btn, 0, 0) self.gridLayout.addWidget(text, 1, 0) self.gridLayout.addWidget(listw, 2, 0) self.setLayout(self.gridLayout) def linePlot(self): plt1 = pg.PlotWidget() plt1.plot([i for i in range(10)], [i * i for i in range(10)]) self.gridLayout.addWidget(plt1, 0, 1, 1, 1) def scatterPlot(self): plt2 = pg.PlotWidget() x = np.random.normal(size=1000) y = np.random.normal(size=1000) plt2.plot(x, y, pen=None, symbol="o") self.gridLayout.addWidget(plt2, 1, 1, 1, 1) def three_curves(self): plt3 = pg.PlotWidget(title="Three plot curves") x = np.arange(1000) y = np.random.normal(size=(3, 1000)) for i in range(3): plt3.plot(x, y[i], pen=(i, 3))  ## setting pen=(i,3) 自动建立3个不一样颜色的笔
        self.gridLayout.addWidget(plt3, 2, 1, 1, 1) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_())

 

 

 

【微语】坚持下去,并不是咱们真的坚强,而是咱们别无选择  ---丘吉尔