六、PyQtgraph图形布局小部件(GraphicsLayoutWidget)

目录

1.GraphicsLayoutWidget()介绍

2.例程1--显示多个图形

​3.例程2--同一图形显示多条曲线

4.例程3--显示网格 

​ 5.例程4--坐标轴刻度


1.GraphicsLayoutWidget()介绍

函数原型:classpyqtgraph.GraphicsLayoutWidget(parent=Noneshow=Falsesize=Nonetitle=None**kargs)由一个GraphicsView以单个GraphicsLayout为中心项目的便利类。这个小部件是生成多面板图形的简单起点。

参数介绍:

  • show:(bool) 如果为 True,则在创建小部件后立即显示小部件。如果小部件没有父级,则它将显示在新窗口中。
  • size:(宽度,高度)元组。(可选)调整小部件的大小。注意:如果此小部件放置在布局内,则此参数无效。
  • title:(str 或 None)如果指定,则为此小部件设置窗口标题。
  • kargs:所有额外的参数都传递给 GraphicsLayout.__init__

源代码:

class GraphicsLayoutWidget(GraphicsView):
    """
    Convenience class consisting of a :class:`GraphicsView 
    ` with a single :class:`GraphicsLayout
    ` as its central item. 

    This widget is an easy starting point for generating multi-panel figures.
    Example::
    
        w = pg.GraphicsLayoutWidget()
        p1 = w.addPlot(row=0, col=0)
        p2 = w.addPlot(row=0, col=1)
        v = w.addViewBox(row=1, col=0, colspan=2)
    
    =========  =================================================================
    parent     (QWidget or None) The parent widget.
    show       (bool) If True, then immediately show the widget after it is
               created. If the widget has no parent, then it will be shown
               inside a new window.
    size       (width, height) tuple. Optionally resize the widget. Note: if
               this widget is placed inside a layout, then this argument has no
               effect.
    title      (str or None) If specified, then set the window title for this
               widget.
    kargs      All extra arguments are passed to
               :meth:`GraphicsLayout.__init__
               `
    =========  =================================================================
        

    This class wraps several methods from its internal GraphicsLayout:
    :func:`nextRow `
    :func:`nextColumn `
    :func:`addPlot `
    :func:`addViewBox `
    :func:`addItem `
    :func:`getItem `
    :func:`addLabel `
    :func:`addLayout `
    :func:`removeItem `
    :func:`itemIndex `
    :func:`clear `
    """
[docs]    def __init__(self, parent=None, show=False, size=None, title=None, **kargs):
        mkQApp()
        GraphicsView.__init__(self, parent)
        self.ci = GraphicsLayout(**kargs)
        for n in ['nextRow', 'nextCol', 'nextColumn', 'addPlot', 'addViewBox', 'addItem', 'getItem', 'addLayout', 'addLabel', 'removeItem', 'itemIndex', 'clear']:
            setattr(self, n, getattr(self.ci, n))
        self.setCentralItem(self.ci)
        
        if size is not None:
            self.resize(*size)
            
        if title is not None:
            self.setWindowTitle(title)
            
        if show is True:
            self.show()

这个类从它的内部 GraphicsLayout 包装了几个方法: nextRow nextColumn addPlot addViewBox addItem getItem addLabel addLayout removeItem itemIndex clear

2.例程1--显示多个图形

        例程展示了addPlot的用法,每次add Plot都会显示一个波形图窗口。允许通过调用nextColumn和nextRow调整行列位置。

# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg

# 创建一个图形布局小部件
win = pg.GraphicsLayoutWidget(show=True, size=(600,600), title="布局小部件标题")
# 上面已经初始化过size,还可以通过以下方式修改size
# win.resize(1000,600)
# 设置窗口标题
# win.setWindowTitle('布局小部件标题')

# 添加Plot显示窗体
p1 = win.addPlot(title="Plot标题1", y=np.random.normal(size=100))
# 在下一列显示窗体
win.nextColumn()
p2 = win.addPlot(title="Plot标题2", y=np.random.normal(size=100))
# 在下一行显示窗体
win.nextRow()
p3 = win.addPlot(title="Plot标题3", y=np.random.normal(size=100))
p4 = win.addPlot(title="Plot标题4", y=np.random.normal(size=100))
# 显示label
win.addLabel(text = "我是一个Label")

if __name__ == '__main__':
    pg.exec()

运行结果:

六、PyQtgraph图形布局小部件(GraphicsLayoutWidget)_第1张图片
3.例程2--同一图形显示多条曲线

        同一图显示多条曲线的方法。

# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg

# 创建一个图形布局小部件
win = pg.GraphicsLayoutWidget(show=True, size=(600,600), title="布局小部件标题")


# 添加Plot显示窗体
p = win.addPlot(title="Plot标题")
# 显示第一波形
p.plot(np.random.normal(size=100), pen=(255,0,0), name="红色")
# 显示第二波形
p.plot(np.random.normal(size=110)+5, pen=(0,255,0), name="绿色")
# 显示第三波形
p.plot(np.random.normal(size=120)+10, pen=(0,0,255), name="蓝色")

if __name__ == '__main__':
    pg.exec()

运行结果:

六、PyQtgraph图形布局小部件(GraphicsLayoutWidget)_第2张图片

4.例程3--显示网格 

         通过p.showGrid(x=True, y=True)来控制横纵grid的显示。

# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg

# 创建一个图形布局小部件
win = pg.GraphicsLayoutWidget(show=True, size=(600,600), title="布局小部件标题")


# 添加Plot显示窗体
p = win.addPlot(title="Plot标题")
# 显示第一波形
p.plot(np.random.normal(size=100), pen=(255,0,0), name="Red curve")
# 显示网格
p.showGrid(x=True, y=True)

if __name__ == '__main__':
    pg.exec()

运行结果:

六、PyQtgraph图形布局小部件(GraphicsLayoutWidget)_第3张图片 5.例程4--坐标轴刻度

        本例程主要介绍如何设置显示XY轴刻度,以及自动调整刻度单位。 

# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg

# 创建一个图形布局小部件
win = pg.GraphicsLayoutWidget(show=True, size=(600,600), title="布局小部件标题")


# 添加Plot显示窗体
p = win.addPlot(title="Plot标题")
x = np.random.normal(size=1000) * 1e-5
y = x*1000 + 0.005 * np.random.normal(size=1000)
y -= y.min()-1.0
mask = x > 1e-15
x = x[mask]
y = y[mask]
# 显示第一波形
p.plot(x, y, pen=None, symbol='t', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 50))
# 显示网格
p.showGrid(x=True, y=True)
# Y轴Label显示坐标轴刻度
p.setLabel('left', "Y Axis", units='A')
# X轴Label显示坐标轴刻度
p.setLabel('bottom', "X Axis", units='s')
# 如果log为 True,则以对数刻度显示刻度并相应地调整值。(x轴的单位可以自动调整ms us 。。。)
p.setLogMode(x=True, y=False)

if __name__ == '__main__':
    pg.exec()

 运行结果:

六、PyQtgraph图形布局小部件(GraphicsLayoutWidget)_第4张图片

你可能感兴趣的:(PyQtgraph例程全解析,python,pyqt5,time)