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
63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
This example demonstrates ViewBox and AxisItem configuration to plot a correlation matrix.
|
|
"""
|
|
## Add path to library (just for examples; you do not need this)
|
|
import initExample
|
|
|
|
import numpy as np
|
|
import pyqtgraph as pg
|
|
from pyqtgraph.Qt import QtWidgets, mkQApp, QtGui
|
|
|
|
class MainWindow(QtWidgets.QMainWindow):
|
|
""" example application main window """
|
|
def __init__(self, *args, **kwargs):
|
|
super(MainWindow, self).__init__(*args, **kwargs)
|
|
gr_wid = pg.GraphicsLayoutWidget(show=True)
|
|
self.setCentralWidget(gr_wid)
|
|
self.setWindowTitle('pyqtgraph example: Correlation matrix display')
|
|
self.resize(600,500)
|
|
self.show()
|
|
|
|
corrMatrix = np.array([
|
|
[ 1. , 0.5184571 , -0.70188642],
|
|
[ 0.5184571 , 1. , -0.86094096],
|
|
[-0.70188642, -0.86094096, 1. ]
|
|
])
|
|
columns = ["A", "B", "C"]
|
|
|
|
pg.setConfigOption('imageAxisOrder', 'row-major') # Switch default order to Row-major
|
|
|
|
correlogram = pg.ImageItem()
|
|
# create transform to center the corner element on the origin, for any assigned image:
|
|
tr = QtGui.QTransform().translate(-0.5, -0.5)
|
|
correlogram.setTransform(tr)
|
|
correlogram.setImage(corrMatrix)
|
|
|
|
plotItem = gr_wid.addPlot() # add PlotItem to the main GraphicsLayoutWidget
|
|
plotItem.invertY(True) # orient y axis to run top-to-bottom
|
|
plotItem.setDefaultPadding(0.0) # plot without padding data range
|
|
plotItem.addItem(correlogram) # display correlogram
|
|
|
|
# show full frame, label tick marks at top and left sides, with some extra space for labels:
|
|
plotItem.showAxes( True, showValues=(True, True, False, False), size=20 )
|
|
|
|
# define major tick marks and labels:
|
|
ticks = [ (idx, label) for idx, label in enumerate( columns ) ]
|
|
for side in ('left','top','right','bottom'):
|
|
plotItem.getAxis(side).setTicks( (ticks, []) ) # add list of major ticks; no minor ticks
|
|
plotItem.getAxis('bottom').setHeight(10) # include some additional space at bottom of figure
|
|
|
|
colorMap = pg.colormap.get("CET-D1") # choose perceptually uniform, diverging color map
|
|
# generate an adjustabled color bar, initially spanning -1 to 1:
|
|
bar = pg.ColorBarItem( values=(-1,1), cmap=colorMap)
|
|
# link color bar and color map to correlogram, and show it in plotItem:
|
|
bar.setImageItem(correlogram, insert_in=plotItem)
|
|
|
|
mkQApp("Correlation matrix display")
|
|
main_window = MainWindow()
|
|
|
|
## Start Qt event loop
|
|
if __name__ == '__main__':
|
|
pg.exec()
|