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()
|