acoused/View/plot_noise_window.py

90 lines
3.0 KiB
Python

from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import (
QWidget, QLabel, QHBoxLayout, QVBoxLayout, QApplication,
QMainWindow, QGridLayout, QDialog, QFrame, QTabWidget,
QScrollArea
)
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar
from matplotlib.colors import LogNorm, BoundaryNorm
import settings as stg
class PlotNoiseWindow(QDialog):
def __init__(self, parent=None):
super(PlotNoiseWindow, self).__init__(parent)
self.setGeometry(400, 200, 700, 500)
self.setWindowTitle("Noise field")
self.verticalLayout_Main = QVBoxLayout()
self.setLayout(self.verticalLayout_Main)
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())
self.tab.addTab(self.tabs[i], stg.filename_BS_raw_data[i])
verticalLayout = QVBoxLayout()
self.tabs[i].setLayout(verticalLayout)
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]):
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:
val_min = 0
val_max = 1e-5
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'
)
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
)
fig.supxlabel('Time (sec)', fontsize=10)
fig.supylabel('Depth (m)', fontsize=10)
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()
canvas = FigureCanvas(fig)
toolbar = NavigationToolBar(canvas, self)
scroll = QScrollArea()
scroll.setWidget(canvas)
verticalLayout.addWidget(toolbar)
verticalLayout.addWidget(scroll)