123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- from __future__ import unicode_literals
- import sys
- import os
- import random
- import matplotlib
- # Make sure that we are using QT5
- matplotlib.use('Qt5Agg')
- from PyQt5 import QtCore, QtWidgets
-
- from numpy import arange, sin, pi
- from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
- from matplotlib.figure import Figure
- import numpy as np
-
- class MyMplCanvas(FigureCanvas):
-
- """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.)."""
- def __init__(self, parent=None, width=3, height=4, dpi=100):
-
- self.fig = Figure(figsize=(width, height), dpi=dpi, facecolor='darkgrey')
- #self.fig.patch.set_facecolor('blue')
- FigureCanvas.__init__(self, self.fig)
-
- self.setParent(parent)
- FigureCanvas.updateGeometry(self)
-
- def compute_initial_figure(self):
- pass
-
- def clicked(self):
- print ("Clicked")
-
- class MyDynamicMplCanvas(MyMplCanvas):
-
- """A canvas that updates itself every second with a new plot."""
- def __init__(self, *args, **kwargs):
- MyMplCanvas.__init__(self, *args, **kwargs)
- self.ax1 = self.fig.add_axes([.125,.1,.725,.8])
- self.ax2 = self.ax1.twinx() # fig.add_axes([.125,.1,.725,.8])
- self.compute_initial_figure()
-
- def reAxH(self, num, shx=True, shy=True):
- fs = 10
-
- try:
- for ax in fig.axes:
- self.fig.delaxes(ax)
- except:
- pass
- try:
- self.fig.clear()
- except:
- pass
-
- for n in range(num):
- if n == 0:
- self.ax1 = self.fig.add_subplot( 1, num, 1)
- self.ax1.tick_params(axis='both', which='major', labelsize=fs)
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='x')
- self.ax1.yaxis.get_offset_text().set_size(fs)
- self.ax1.xaxis.get_offset_text().set_size(fs)
- if n == 1:
- self.ax2 = self.fig.add_subplot( 1, num, 2)
- self.ax2.tick_params(axis='both', which='major', labelsize=fs)
- self.ax2.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax2.yaxis.get_offset_text().set_size(fs)
- if n == 2:
- self.ax3 = self.fig.add_subplot( 1, num, 3)
- self.ax3.tick_params(axis='both', which='major', labelsize=fs)
- self.ax3.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax3.yaxis.get_offset_text().set_size(fs)
- if n == 3:
- self.ax4 = self.fig.add_subplot( 1, num, 4)
- self.ax4.tick_params(axis='both', which='major', labelsize=fs)
- self.ax4.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax4.yaxis.get_offset_text().set_size(fs)
-
- def reAxH2(self, num, shx=True, shy=True):
- fs = 10
- try:
- for ax in fig.axes:
- self.fig.delaxes(ax)
- except:
- pass
- try:
- self.fig.clear()
- except:
- pass
-
- for n in range(num):
- if n == 0:
- self.ax1 = self.fig.add_subplot( 2, num, 1)
- self.ax1.tick_params(axis='both', which='major', labelsize=fs)
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax1.yaxis.get_offset_text().set_size(fs)
- self.ax21 = self.fig.add_subplot( 2, num, num+1)
- self.ax21.tick_params(axis='both', which='major', labelsize=fs)
- self.ax21.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax21.yaxis.get_offset_text().set_size(fs)
- if n == 1:
- self.ax2 = self.fig.add_subplot( 2, num, 2, sharex=self.ax1, sharey=self.ax1)
- self.ax2.tick_params(axis='both', which='major', labelsize=fs)
- self.ax2.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax2.yaxis.get_offset_text().set_size(fs)
- self.ax22 = self.fig.add_subplot( 2, num, num+2, sharex=self.ax21, sharey=self.ax21)
- self.ax22.tick_params(axis='both', which='major', labelsize=fs)
- self.ax22.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax22.yaxis.get_offset_text().set_size(fs)
- if n == 2:
- self.ax3 = self.fig.add_subplot( 2, num, 3, sharex=self.ax1, sharey=self.ax1)
- self.ax3.tick_params(axis='both', which='major', labelsize=fs)
- self.ax3.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax3.yaxis.get_offset_text().set_size(fs)
- self.ax23 = self.fig.add_subplot( 2, num, num+3, sharex=self.ax21, sharey=self.ax21)
- self.ax23.tick_params(axis='both', which='major', labelsize=fs)
- self.ax23.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax23.yaxis.get_offset_text().set_size(fs)
- if n == 3:
- self.ax4 = self.fig.add_subplot( 2, num, 4, sharex=self.ax1, sharey=self.ax1 )
- self.ax4.tick_params(axis='both', which='major', labelsize=fs)
- self.ax4.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax4.yaxis.get_offset_text().set_size(fs)
- self.ax24 = self.fig.add_subplot( 2, num, num+4, sharex=self.ax21, sharey=self.ax21 )
- self.ax24.tick_params(axis='both', which='major', labelsize=fs)
- self.ax24.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax24.yaxis.get_offset_text().set_size(fs)
- if n == 4:
- self.ax5 = self.fig.add_subplot( 2, num, 5, sharex=self.ax1, sharey=self.ax1 )
- self.ax5.tick_params(axis='both', which='major', labelsize=8)
- self.ax5.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax5.yaxis.get_offset_text().set_size(8)
- self.ax25 = self.fig.add_subplot( 2, num, num+5, sharex=self.ax21, sharey=self.ax21 )
- self.ax25.tick_params(axis='both', which='major', labelsize=8)
- self.ax25.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax25.yaxis.get_offset_text().set_size(8)
- if n == 5:
- self.ax6 = self.fig.add_subplot( 2, num, 6, sharex=self.ax1, sharey=self.ax1 )
- self.ax6.tick_params(axis='both', which='major', labelsize=8)
- self.ax6.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax6.yaxis.get_offset_text().set_size(8)
- self.ax26 = self.fig.add_subplot( 2, num, num+6, sharex=self.ax21, sharey=self.ax21 )
- self.ax26.tick_params(axis='both', which='major', labelsize=8)
- self.ax26.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax26.yaxis.get_offset_text().set_size(8)
- if n == 6:
- self.ax7 = self.fig.add_subplot( 2, num, 7, sharex=self.ax1, sharey=self.ax1 )
- self.ax7.tick_params(axis='both', which='major', labelsize=8)
- self.ax7.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax7.yaxis.get_offset_text().set_size(8)
- self.ax27 = self.fig.add_subplot( 2, num, num+7, sharex=self.ax21, sharey=self.ax21 )
- self.ax27.tick_params(axis='both', which='major', labelsize=8)
- self.ax27.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax27.yaxis.get_offset_text().set_size(8)
- if n == 7:
- self.ax8 = self.fig.add_subplot( 2, num, 8, sharex=self.ax1, sharey=self.ax1 )
- self.ax8.tick_params(axis='both', which='major', labelsize=8)
- self.ax8.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax8.yaxis.get_offset_text().set_size(8)
- self.ax28 = self.fig.add_subplot( 2, num, num+8, sharex=self.ax21, sharey=self.ax21 )
- self.ax28.tick_params(axis='both', which='major', labelsize=8)
- self.ax28.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax28.yaxis.get_offset_text().set_size(8)
-
- def reAx2(self, shx=True, shy=True):
-
- try:
- self.fig.clear()
- except:
- pass
-
- try:
- self.ax1.clear()
- self.delaxes(self.ax1) #.clear()
- except:
- pass
-
- try:
- self.delaxes(self.ax3) #.clear()
- except:
- pass
-
- try:
- self.ax2.clear()
- self.delaxes(self.ax2) #.clear()
- except:
- pass
-
- #self.fig.patch.set_facecolor('red')
- self.ax1 = self.fig.add_subplot(211)
- if shx and shy:
- self.ax2 = self.fig.add_subplot(212, sharex=self.ax1, sharey=self.ax1)
- elif shx == True:
- self.ax2 = self.fig.add_subplot(212, sharex=self.ax1)
- elif shy == True:
- self.ax2 = self.fig.add_subplot(212, sharey=self.ax1)
- else:
- self.ax2 = self.fig.add_subplot(212)
-
- self.ax1.tick_params(axis='both', which='major', labelsize=10)
- self.ax2.tick_params(axis='both', which='major', labelsize=10)
-
- self.ax1.ticklabel_format(style='scientific', scilimits=(0,0), axis='y')
- self.ax2.ticklabel_format(style='scientific', scilimits=(0,0), axis='y')
-
- self.ax1.yaxis.get_offset_text().set_size(10)
- self.ax2.yaxis.get_offset_text().set_size(10)
-
- def softClear(self):
- for ax in self.fig.get_axes():
- for artist in ax.lines + ax.collections:
- artist.remove()
- ax.set_prop_cycle(None)
-
- def reAx3(self, shx=True, shy=True):
-
- fs = 10
-
- try:
- self.fig.clear()
- except:
- pass
-
- try:
- self.ax1.clear()
- self.delaxes(self.ax1) #.clear()
- except:
- pass
-
- try:
- self.ax2.clear()
- self.delaxes(self.ax2) #.clear()
- except:
- pass
-
- try:
- self.ax3.clear()
- self.delaxes(self.ax3) #.clear()
- except:
- pass
-
- self.ax2 = self.fig.add_subplot(211)
- if shx and shy:
- self.ax1 = self.fig.add_subplot(212, sharex=self.ax2, sharey=self.ax2)
- elif shx:
- self.ax1 = self.fig.add_subplot(212, sharex=self.ax2)
- elif shy:
- self.ax1 = self.fig.add_subplot(212, sharey=self.ax2)
- else:
- self.ax1 = self.fig.add_subplot(212)
-
- self.ax3 = self.ax1.twinx()
- self.ax2.yaxis.set_label_position("right")
- self.ax2.yaxis.set_ticks_position("right")
- #self.ax2.yaxis.tick_right()
-
- #self.ax1.set_facecolor('red')
- #self.ax2.set_facecolor('red')
- #self.ax3.set_facecolor('red')
- #self.fig.set_facecolor('red')
- #self.fig.set_edgecolor('red')
- #self.ax1.set_axis_bgcolor('green')
-
- self.ax1.tick_params(axis='both', which='major', labelsize=fs)
- self.ax2.tick_params(axis='both', which='major', labelsize=fs)
- self.ax3.tick_params(axis='both', which='major', labelsize=fs)
-
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax2.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax3.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
-
- self.ax1.yaxis.get_offset_text().set_size(fs)
- self.ax2.yaxis.get_offset_text().set_size(fs)
- self.ax3.yaxis.get_offset_text().set_size(fs)
-
- def reAx4(self):
-
- try:
- self.fig.clear()
- except:
- pass
-
- # two main axes
- self.ax1 = self.fig.add_axes([0.15, 0.55, 0.625, 0.3672])
- self.ax2 = self.fig.add_axes([0.15, 0.135, 0.625, 0.3672])
-
- # for colourbars
- self.cax1 = self.fig.add_axes([0.8, 0.55, 0.025, 0.3672])
- self.cax2 = self.fig.add_axes([0.8, 0.135, 0.025, 0.3672])
-
- self.ax1.tick_params(axis='both', which='major', labelsize=8)
- self.ax2.tick_params(axis='both', which='major', labelsize=8)
-
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax2.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
-
- self.ax1.yaxis.get_offset_text().set_size(8)
- self.ax2.yaxis.get_offset_text().set_size(8)
-
- self.cax1.tick_params(axis='both', which='major', labelsize=8)
- self.cax2.tick_params(axis='both', which='major', labelsize=8)
-
- self.cax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.cax2.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
-
- self.cax1.yaxis.get_offset_text().set_size(8) #.get_text()
- self.cax2.yaxis.get_offset_text().set_size(8) #.get_text()
-
- self.cax1.tick_params(labelsize=8)
- self.cax2.tick_params(labelsize=8)
-
-
- def compute_initial_figure(self):
-
- t = np.arange(0,.3,1e-4)
- x = np.cos(t*2000.*np.pi*2)*np.exp(-t/.07)
- x2 = np.exp(-t/.07)
- dp = self.ax1.plot(t, x, 'r',label='test function')
- dp2 = self.ax2.plot(t, x2, 'r',label='test function2')
- self.ax1.set_xlabel("Time [s]", fontsize=8)
- self.ax1.set_ylabel("Signal [nV]", fontsize=8)
-
- self.ax1.tick_params(axis='both', which='major', labelsize=8)
- self.ax1.tick_params(axis='both', which='minor', labelsize=6)
-
- self.ax1.ticklabel_format(style='sci', scilimits=(0,0), axis='y')
- self.ax1.legend(prop={'size':6})
|