diff --git a/View/plot_noise_window.py b/View/plot_noise_window.py index 37cbc67..e47b96b 100644 --- a/View/plot_noise_window.py +++ b/View/plot_noise_window.py @@ -1,7 +1,10 @@ from PyQt5.QtGui import QIcon, QPixmap -from PyQt5.QtWidgets import (QWidget, QLabel, QHBoxLayout, QVBoxLayout, QApplication, QMainWindow, QGridLayout, - QDialog, QFrame, QTabWidget, QScrollArea) +from PyQt5.QtWidgets import ( + QWidget, QLabel, QHBoxLayout, QVBoxLayout, QApplication, + QMainWindow, QGridLayout, QDialog, QFrame, QTabWidget, + QScrollArea +) import numpy as np @@ -14,9 +17,7 @@ import settings as stg class PlotNoiseWindow(QDialog): - def __init__(self, parent=None): - super(PlotNoiseWindow, self).__init__(parent) self.setGeometry(400, 200, 700, 500) @@ -29,65 +30,60 @@ class PlotNoiseWindow(QDialog): self.tab = QTabWidget() self.verticalLayout_Main.addWidget(self.tab) + self.tabs = [] + for i in range(len(stg.filename_BS_raw_data)): + self.tabs.append(QWidget()) - exec("self.tab" + str(i) + "= QWidget()") - exec("self.tab.addTab(self.tab" + str(i) + ", stg.filename_BS_raw_data[" + str(i) + "])") + self.tab.addTab(self.tabs[i], stg.filename_BS_raw_data[i]) - exec("self.verticalLayout_tab" + str(i) + "= QVBoxLayout()") - exec("self.tab" + str(i) + ".setLayout(self.verticalLayout_tab" + str(i) + ")") + verticalLayout = QVBoxLayout() + self.tabs[i].setLayout(verticalLayout) - exec("self.fig" + str(i) + ", self.ax" + str(i) + - "= plt.subplots(nrows=stg.freq[" + str(i) + "].shape[0], ncols=1, layout='constrained')") + fig, ax = plt.subplots( + nrows=stg.freq[i].shape[0], ncols=1, layout='constrained' + ) if stg.BS_noise_raw_data[i].shape != (0,): - for freq_ind, freq_val in enumerate(stg.freq[i]): - - eval("self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".cla()") + ax[freq_ind].cla() val_min = np.nanmin(stg.BS_noise_raw_data[i][freq_ind, :, :]) val_max = np.nanmax(stg.BS_noise_raw_data[i][freq_ind, :, :]) - if val_min == val_max: - exec("pcm = self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".pcolormesh(" + - "stg.time_noise[" + str(i) + "][" + str(freq_ind) + ", :]," + - "-stg.depth_noise[" + str(i) + "][" + str(freq_ind) + ", :]," + - "stg.BS_noise_raw_data[" + str(i) + "][" + str(freq_ind) + ", :, :]," + - "cmap='hsv')") - else: + if val_min != val_max: val_min = 0 val_max = 1e-5 - exec("pcm = self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".pcolormesh(" + - "stg.time_noise[" + str(i) + "][" + str(freq_ind) + ", :]," + - "-stg.depth_noise[" + str(i) + "][" + str(freq_ind) + ", :]," + - "stg.BS_noise_raw_data[" + str(i) + "][" + str(freq_ind) + ", :, :]," + - "cmap='hsv')") - eval("self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".text(1, .70, stg.freq_text[" + str(i) + - "][" + str(freq_ind) + "]," + - "fontsize=10, fontweight='bold', fontname='DejaVu Sans', c='black', alpha=0.5," + - "horizontalalignment='right', verticalalignment='bottom'," + - "transform=self.ax" + str(i) + "[" + str(freq_ind) + "].transAxes)") + pcm = ax[freq_ind].pcolormesh( + stg.time_noise[i][freq_ind, :], + -stg.depth_noise[i][freq_ind, :], + stg.BS_noise_raw_data[i][freq_ind, :, :], + cmap='hsv' + ) - exec("self.fig" + str(i) + ".supxlabel('Time (sec)', fontsize=10)") - exec("self.fig" + str(i) + ".supylabel('Depth (m)', fontsize=10)") + ax[freq_ind].text( + 1, .70, stg.freq_text[i][freq_ind], + fontsize=10, fontweight='bold', + fontname='DejaVu Sans', c='black', alpha=0.5, + horizontalalignment='right', verticalalignment='bottom', + transform=ax[freq_ind].transAxes + ) - exec("cbar = self.fig" + str(i) + ".colorbar(pcm, ax=self.ax" + str(i) + "[:] ," + - "shrink=1, location='right')") - eval("cbar.set_label(label='Noise signal (V)', rotation=270, labelpad=8)") + fig.supxlabel('Time (sec)', fontsize=10) + fig.supylabel('Depth (m)', fontsize=10) - exec("self.fig" + str(i) + ".canvas.draw_idle()") + cbar = fig.colorbar( + pcm, ax=ax[:], shrink=1, location='right' + ) + cbar.set_label(label='Noise signal (V)', rotation=270, labelpad=8) + fig.canvas.draw_idle() - else: + canvas = FigureCanvas(fig) + toolbar = NavigationToolBar(canvas, self) - pass + scroll = QScrollArea() + scroll.setWidget(canvas) - exec("self.canvas" + str(i) + "= FigureCanvas(self.fig" + str(i) + ")") - exec("self.toolbar" + str(i) + "= NavigationToolBar(self.canvas" + str(i) + ", self)") - - exec("self.scroll" + str(i) + "= QScrollArea()") - exec("self.scroll" + str(i) + ".setWidget(self.canvas" + str(i) + ")") - - exec("self.verticalLayout_tab" + str(i) + ".addWidget(self.toolbar" + str(i) + ")") - exec("self.verticalLayout_tab" + str(i) + ".addWidget(self.scroll" + str(i) + ")") + verticalLayout.addWidget(toolbar) + verticalLayout.addWidget(scroll)