Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
parent
3fabc632af
commit
30a38b6937
135
src/SimNDT/graphics/mplWidget.py
Normal file
135
src/SimNDT/graphics/mplWidget.py
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
"""
|
||||||
|
pltWidget.py
|
||||||
|
|
||||||
|
Created by Miguel Molero on 2013-09-20.
|
||||||
|
Copyright (c) 2013 MMolero. All rights reserved.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import sys, os, random
|
||||||
|
|
||||||
|
os.environ['QT_API'] = 'pyside'
|
||||||
|
|
||||||
|
import matplotlib
|
||||||
|
matplotlib.use('Qt4Agg')
|
||||||
|
matplotlib.rcParams['backend.qt4']='PySide'
|
||||||
|
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
|
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
|
||||||
|
from matplotlib.figure import Figure
|
||||||
|
|
||||||
|
|
||||||
|
from PySide.QtGui import *
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
class NavigationToolbar(NavigationToolbar):
|
||||||
|
# only display the buttons we need
|
||||||
|
print (sys.platform)
|
||||||
|
|
||||||
|
class MplCanvas(FigureCanvas):
|
||||||
|
def __init__(self, parent=None, width=5, height=4, dpi=100):
|
||||||
|
|
||||||
|
self.fig = Figure(figsize=(width, height), dpi=dpi)
|
||||||
|
self.ax = self.fig.add_subplot(111)
|
||||||
|
|
||||||
|
self.fig.patch.set_facecolor('white')
|
||||||
|
|
||||||
|
FigureCanvas.__init__(self, self.fig)
|
||||||
|
self.setParent(parent)
|
||||||
|
FigureCanvas.updateGeometry(self)
|
||||||
|
self.setMinimumSize(250,250)
|
||||||
|
|
||||||
|
|
||||||
|
class PlotDialog(QDialog):
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, parent=None, width=6, height=5, dpi=100):
|
||||||
|
super(PlotDialog,self).__init__(parent)
|
||||||
|
self.parent = parent
|
||||||
|
|
||||||
|
self.mpl = MplCanvas(self, width=width, height=height, dpi=dpi)
|
||||||
|
self.mpl_toolbar = NavigationToolbar(self.mpl, self)
|
||||||
|
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
layout.addWidget(self.mpl)
|
||||||
|
layout.addWidget(self.mpl_toolbar,0)
|
||||||
|
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
|
||||||
|
self.mpl.fig.patch.set_facecolor('white')
|
||||||
|
|
||||||
|
for item in ([self.mpl.ax.title, self.mpl.ax.xaxis.label, self.mpl.ax.yaxis.label] +
|
||||||
|
self.mpl.ax.get_xticklabels() + self.mpl.ax.get_yticklabels()):
|
||||||
|
item.set_fontsize(10)
|
||||||
|
|
||||||
|
|
||||||
|
self.setWindowFlags(self.windowFlags() )
|
||||||
|
self.setWindowTitle(self.tr("Plot Inspection"))
|
||||||
|
self.setMinimumSize(250,250)
|
||||||
|
self.setMaximumSize(2000,1500)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PlotInline(QDialog):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(PlotInline, self).__init__(parent)
|
||||||
|
|
||||||
|
self.mpl = MplCanvas(self, width=6, height=2, dpi=100)
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
layout.addWidget(self.mpl)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
|
||||||
|
self.mpl.fig.patch.set_facecolor('lightgray')
|
||||||
|
for item in ([self.mpl.ax.title, self.mpl.ax.xaxis.label, self.mpl.ax.yaxis.label] +
|
||||||
|
self.mpl.ax.get_xticklabels() + self.mpl.ax.get_yticklabels()):
|
||||||
|
item.set_fontsize(10)
|
||||||
|
#item.set_color('white')
|
||||||
|
|
||||||
|
|
||||||
|
#self.mpl.ax.spines['bottom'].set_color('white')
|
||||||
|
#self.mpl.ax.spines['top'].set_color('white')
|
||||||
|
#self.mpl.ax.spines['left'].set_color('white')
|
||||||
|
#self.mpl.ax.spines['right'].set_color('white')
|
||||||
|
|
||||||
|
self.setWindowFlags(self.windowFlags() )
|
||||||
|
self.setWindowTitle(self.tr("Receiver Signal"))
|
||||||
|
self.setMinimumSize(250,250)
|
||||||
|
self.setMaximumSize(2000,1500)
|
||||||
|
self.resize(900,350)
|
||||||
|
|
||||||
|
|
||||||
|
def init(self, sig, SimulationTime):
|
||||||
|
lenght = np.size(sig[:,0])
|
||||||
|
self.time = np.linspace(0,SimulationTime, lenght)*1e6
|
||||||
|
|
||||||
|
self.data = list()
|
||||||
|
self.plot, = self.mpl.ax.plot([], [], color='green', linewidth=2)
|
||||||
|
|
||||||
|
self.min = -0.01
|
||||||
|
self.max = 0.01
|
||||||
|
|
||||||
|
self.mpl.ax.patch.set_facecolor('lightgray')
|
||||||
|
|
||||||
|
self.mpl.ax.set_ylim(self.min, self.max)
|
||||||
|
self.mpl.ax.set_xlim(0, self.time[-1])
|
||||||
|
|
||||||
|
self.mpl.ax.grid(True, color='black')
|
||||||
|
self.mpl.ax.set_title("Time Signal", fontsize = 10)
|
||||||
|
self.mpl.ax.set_xlabel("Time ($\mu$s)")
|
||||||
|
self.mpl.ax.set_ylabel("Amplitude")
|
||||||
|
|
||||||
|
def update(self, value):
|
||||||
|
self.data.append(value)
|
||||||
|
N = len(self.data)
|
||||||
|
self.plot.set_data(self.time[0:N], self.data)
|
||||||
|
vmin = np.min([np.min(self.data),self.min])
|
||||||
|
vmax = np.max([np.max(self.data), self.max])
|
||||||
|
self.mpl.ax.set_ylim(vmin,vmax)
|
||||||
|
self.mpl.draw()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user