Aluode/PerceptionLabPortable
0
1"""2This example demonstrates some of the plotting items available in pyqtgraph.3"""4 5import numpy as np6 7import pyqtgraph as pg8from pyqtgraph.Qt import QtCore9 10app = pg.mkQApp("InfiniteLine Example")11win = pg.GraphicsLayoutWidget(show=True, title="Plotting items examples")12win.resize(1000,600)13 14# Enable antialiasing for prettier plots15pg.setConfigOptions(antialias=True)16 17# Create a plot with some random data18p1 = win.addPlot(title="Plot Items example", y=np.random.normal(size=100, scale=10), pen=0.5)19p1.setYRange(-40, 40)20 21# Add three infinite lines with labels22inf1 = pg.InfiniteLine(movable=True, angle=90, label='x={value:0.2f}', 23 labelOpts={'position':0.1, 'color': (200,200,100), 'fill': (200,200,200,50), 'movable': True})24inf2 = pg.InfiniteLine(movable=True, angle=0, pen=(0, 0, 200), bounds = [-20, 20], hoverPen=(0,200,0), label='y={value:0.2f}mm', 25 labelOpts={'color': (200,0,0), 'movable': True, 'fill': (0, 0, 200, 100)})26inf3 = pg.InfiniteLine(movable=True, angle=45, pen='g', label='diagonal',27 labelOpts={'rotateAxis': [1, 0], 'fill': (0, 200, 0, 100), 'movable': True})28inf1.setPos([2,2])29p1.addItem(inf1)30p1.addItem(inf2)31p1.addItem(inf3)32 33targetItem1 = pg.TargetItem()34 35targetItem2 = pg.TargetItem(36 pos=(30, 5),37 size=20,38 symbol="star",39 pen="#F4511E",40 label="vert={1:0.2f}",41 labelOpts={42 "offset": QtCore.QPoint(15, 15)43 }44)45targetItem2.label().setAngle(45)46 47targetItem3 = pg.TargetItem(48 pos=(10, 10),49 size=10,50 symbol="x",51 pen="#00ACC1",52)53targetItem3.setLabel(54 "Third Label",55 {56 "anchor": QtCore.QPointF(0.5, 0.5),57 "offset": QtCore.QPointF(30, 0),58 "color": "#558B2F",59 "rotateAxis": (0, 1)60 }61)62 63 64def callableFunction(x, y):65 return f"Square Values: ({x**2:.4f}, {y**2:.4f})"66 67targetItem4 = pg.TargetItem(68 pos=(10, -10),69 label=callableFunction70)71 72p1.addItem(targetItem1)73p1.addItem(targetItem2)74p1.addItem(targetItem3)75p1.addItem(targetItem4)76 77# Add a linear region with a label78lr = pg.LinearRegionItem(values=[70, 80])79p1.addItem(lr)80label = pg.InfLineLabel(lr.lines[1], "region 1", position=0.95, rotateAxis=(1,0), anchor=(1, 1))81 82if __name__ == '__main__':83 pg.exec()84 