920fd9333e
- volumetric rendering - isosurfaces, mesh rendering - basic transformation and parent/child functionality
88 lines
2.3 KiB
Python
88 lines
2.3 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
## Add path to library (just for examples; you do not need this)
|
|
import sys, os
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
|
|
|
|
|
|
from pyqtgraph.Qt import QtGui, QtCore
|
|
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")
|
|
win.resize(800,600)
|
|
|
|
|
|
|
|
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()
|
|
|
|
p4 = win.addPlot(title="Parametric")
|
|
x = np.cos(np.linspace(0, 2*np.pi, 1000))
|
|
y = np.sin(np.linspace(0, 4*np.pi, 1000))
|
|
p4.plot(x, y)
|
|
|
|
p5 = win.addPlot(title="Scatter plot with labels")
|
|
x = np.random.normal(size=1000) * 1e-5
|
|
y = x*1000 + 0.005 * np.random.normal(size=1000)
|
|
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')
|
|
|
|
|
|
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:
|
|
p6.enableAutoRange('xy', False)
|
|
ptr += 1
|
|
timer = QtCore.QTimer()
|
|
timer.timeout.connect(update)
|
|
timer.start(50)
|
|
|
|
|
|
win.nextRow()
|
|
|
|
p7 = win.addPlot(title="Filled plot")
|
|
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))
|
|
|
|
|
|
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)
|
|
def update():
|
|
p9.setXRange(*lr.getRegion())
|
|
lr.sigRegionChanged.connect(update)
|
|
update()
|
|
|
|
## Start Qt event loop unless running in interactive mode.
|
|
if sys.flags.interactive != 1:
|
|
app.exec_()
|