61f067bf7c
* add axis convenient methods and matrix display example * wrestled wayward space back into docstring * color map names are case sensitive on Linux * docstring fix for PlotItem * protect AxisItem.linkToView from being obscured by DateAxisItem override * replaced setOrigin method by promoted setPos and setScale * made tri-state axes switching explicit * reverted setRect behavior, documentation pass for ImageItem * minor text adjustment * implmented some suggested revisions * fix input parsing for setRect and add tests so that I don't break it again * don't try to re-add transform after clearing it * changed example and doc image generators to pg.exec() * removed commented-out code * cleaned up transform eqaulity assertion * restored devoured comment * restored devoured comment
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
"""
|
|
generates 'example_gradient_plot.png'
|
|
"""
|
|
import numpy as np
|
|
import pyqtgraph as pg
|
|
import pyqtgraph.exporters as exp
|
|
from pyqtgraph.Qt import QtCore, QtGui, QtWidgets, mkQApp
|
|
|
|
class MainWindow(pg.GraphicsLayoutWidget):
|
|
""" example application main window """
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.resize(420,400)
|
|
self.show()
|
|
|
|
# Prepare demonstration data
|
|
raw = np.linspace(0.0, 2.0, 400)
|
|
y_data1 = ( (raw+0.1)%1 ) ** 4
|
|
y_data2 = ( (raw+0.1)%1 ) ** 4 - ( (raw+0.6)%1 ) ** 4
|
|
|
|
# Example 1: Gradient pen
|
|
cm = pg.colormap.get('CET-L17') # prepare a linear color map
|
|
cm.reverse() # reverse it to put light colors at the top
|
|
pen = cm.getPen( span=(0.0,1.0), width=5 ) # gradient from blue (y=0) to white (y=1)
|
|
# plot a curve drawn with a pen colored according to y value:
|
|
curve1 = pg.PlotDataItem( y=y_data1, pen=pen )
|
|
|
|
# Example 2: Gradient brush
|
|
cm = pg.colormap.get('CET-D1') # prepare a diverging color map
|
|
cm.setMappingMode('diverging') # set mapping mode
|
|
brush = cm.getBrush( span=(-1., 1.) ) # gradient from blue at -1 to red at +1
|
|
# plot a curve that is filled to zero with the gradient brush:
|
|
curve2 = pg.PlotDataItem( y=y_data2, pen='w', brush=brush, fillLevel=0.0 )
|
|
|
|
for idx, curve in enumerate( (curve1, curve2) ):
|
|
plot = self.addPlot(row=idx, col=0)
|
|
plot.getAxis('left').setWidth(25)
|
|
plot.addItem( curve )
|
|
|
|
self.timer = pg.QtCore.QTimer( singleShot=True )
|
|
self.timer.timeout.connect(self.export)
|
|
self.timer.start(100)
|
|
|
|
def export(self):
|
|
print('exporting')
|
|
exporter = exp.ImageExporter(self.scene())
|
|
exporter.parameters()['width'] = 420
|
|
exporter.export('example_gradient_plot.png')
|
|
|
|
mkQApp("Gradient plotting example")
|
|
main_window = MainWindow()
|
|
|
|
## Start Qt event loop
|
|
if __name__ == '__main__':
|
|
pg.exec()
|