Plotting.py 2.95 KB
 Luke Campagnola committed Mar 01, 2012 1 ``````# -*- coding: utf-8 -*- `````` Luke Campagnola committed Mar 17, 2012 2 3 4 5 6 7 8 `````` ## This example demonstrates many of the 2D plotting capabilities ## in pyqtgraph. All of the plots may be panned/scaled by dragging with ## the left/right mouse buttons. Right click on any plot to show a context menu. import initExample ## Add path to library (just for examples; you do not need this) `````` Luke Campagnola committed Mar 01, 2012 9 10 `````` `````` Luke Campagnola committed Mar 01, 2012 11 ``````from pyqtgraph.Qt import QtGui, QtCore `````` Luke Campagnola committed Mar 01, 2012 12 13 14 15 16 17 18 19 20 ``````import numpy as np import pyqtgraph as pg #QtGui.QApplication.setGraphicsSystem('raster') app = QtGui.QApplication([]) #mw = QtGui.QMainWindow() #mw.resize(800,800) win = pg.GraphicsWindow(title="Basic plotting examples") `````` Luke Campagnola committed Dec 23, 2012 21 ``````win.resize(1000,600) `````` Luke Campagnola committed Mar 01, 2012 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 `````` p1 = win.addPlot(title="Basic array plotting", y=np.random.normal(size=100)) p2 = win.addPlot(title="Multiple curves") p2.plot(np.random.normal(size=100), pen=(255,0,0)) p2.plot(np.random.normal(size=100)+5, pen=(0,255,0)) p2.plot(np.random.normal(size=100)+10, pen=(0,0,255)) p3 = win.addPlot(title="Drawing with points") p3.plot(np.random.normal(size=100), pen=(200,200,200), symbolBrush=(255,0,0), symbolPen='w') win.nextRow() `````` Luke Campagnola committed Apr 21, 2012 38 ``````p4 = win.addPlot(title="Parametric, grid enabled") `````` Luke Campagnola committed Mar 01, 2012 39 40 41 ``````x = np.cos(np.linspace(0, 2*np.pi, 1000)) y = np.sin(np.linspace(0, 4*np.pi, 1000)) p4.plot(x, y) `````` Luke Campagnola committed Apr 21, 2012 42 ``````p4.showGrid(x=True, y=True) `````` Luke Campagnola committed Mar 01, 2012 43 `````` `````` Luke Campagnola committed Apr 21, 2012 44 ``````p5 = win.addPlot(title="Scatter plot, axis labels, log scale") `````` Luke Campagnola committed Mar 01, 2012 45 46 ``````x = np.random.normal(size=1000) * 1e-5 y = x*1000 + 0.005 * np.random.normal(size=1000) `````` Luke Campagnola committed Apr 21, 2012 47 ``````y -= y.min()-1.0 `````` Luke Campagnola committed Jan 11, 2013 48 49 50 ``````mask = x > 1e-15 x = x[mask] y = y[mask] `````` Luke Campagnola committed Mar 01, 2012 51 52 53 ``````p5.plot(x, y, pen=None, symbol='t', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 50)) p5.setLabel('left', "Y Axis", units='A') p5.setLabel('bottom', "Y Axis", units='s') `````` Luke Campagnola committed Apr 21, 2012 54 ``````p5.setLogMode(x=True, y=False) `````` Luke Campagnola committed Mar 01, 2012 55 56 57 58 59 60 61 62 63 `````` p6 = win.addPlot(title="Updating plot") curve = p6.plot(pen='y') data = np.random.normal(size=(10,1000)) ptr = 0 def update(): global curve, data, ptr, p6 curve.setData(data[ptr%10]) if ptr == 0: `````` Luke Campagnola committed Mar 18, 2012 64 `````` p6.enableAutoRange('xy', False) ## stop auto-scaling after the first data set is plotted `````` Luke Campagnola committed Mar 01, 2012 65 66 67 68 69 70 71 72 `````` ptr += 1 timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(50) win.nextRow() `````` Luke Campagnola committed Apr 21, 2012 73 ``````p7 = win.addPlot(title="Filled plot, axis disabled") `````` Luke Campagnola committed Mar 01, 2012 74 75 ``````y = np.sin(np.linspace(0, 10, 1000)) + np.random.normal(size=1000, scale=0.1) p7.plot(y, fillLevel=-0.3, brush=(50,50,200,100)) `````` Luke Campagnola committed Apr 21, 2012 76 ``````p7.showAxis('bottom', False) `````` Luke Campagnola committed Mar 01, 2012 77 78 `````` `````` Luke Campagnola committed Mar 09, 2012 79 80 81 82 83 84 85 86 87 88 ``````x2 = np.linspace(-100, 100, 1000) data2 = np.sin(x2) / x2 p8 = win.addPlot(title="Region Selection") p8.plot(data2, pen=(255,255,255,200)) lr = pg.LinearRegionItem([400,700]) lr.setZValue(-10) p8.addItem(lr) p9 = win.addPlot(title="Zoom on selected region") p9.plot(data2) `````` Luke Campagnola committed Apr 22, 2012 89 90 91 92 93 94 95 ``````def updatePlot(): p9.setXRange(*lr.getRegion(), padding=0) def updateRegion(): lr.setRegion(p9.getViewBox().viewRange()[0]) lr.sigRegionChanged.connect(updatePlot) p9.sigXRangeChanged.connect(updateRegion) updatePlot() `````` Luke Campagnola committed Mar 09, 2012 96 `````` `````` Luke Campagnola committed Mar 17, 2012 97 ``````## Start Qt event loop unless running in interactive mode or using pyside. `````` Luke Campagnola committed Dec 05, 2012 98 99 100 101 ``````if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtGui.QApplication.instance().exec_()``````