Я собираюсь отобразить график с использованием Python 'GUI. Код GUI и общий код применяются по-разному (ось X). Я не ставил никаких опций специально для сюжета, но причина неизвестна. Используя модуль obspy, просто загрузить код mseed, представляющий собой формат данных землетрясения, и отобразить график. До сих пор, чтобы поместить ось x в качестве даты и времени, я пытался использовать функцию «arange» и функцию «for in», чтобы поместить ее в график, но программа GUI не работает нормально и завершается. Проблема в том, что график обычно строится, но ось X отображается как частота выборки данных, а не время.
Полный код выглядит следующим образом:
import sys, os
from os.path import basename
import numpy as np
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import matplotlib.pyplot as plt
import obspy.signal.util as sig
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from obspy import read, UTCDateTime
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
# GUI WINDOW
self.setGeometry(100, 100, 1000, 700)
self.setWindowTitle("TEST TITLE")
# OPEN FILE DIALOG
self.pushButton = QPushButton("LOAD FILE")
self.pushButton.clicked.connect(self.pushButtonClicked)
# LABLE, NOT USED
self.label = QLabel("", self)
self.label.resize(1000, 30)
# PLOT FIGURE, CANVAS AND NAVIGATION TOOLBAR
self.fig = plt.Figure()
self.canvas = FigureCanvas(self.fig)
self.toolbar = NavigationToolbar(self.canvas, self)
# LAYOUT(CANVAS, TOOLBAR)
topLayout = QVBoxLayout()
topLayout.addWidget(self.toolbar)
topLayout.addWidget(self.canvas)
# LAYOUT(BUTTON)
bottomLayout = QHBoxLayout()
bottomLayout.addWidget(self.pushButton)
bottomLayout.addStretch(1)
# ALL LAYOUT
layout = QVBoxLayout()
layout.addLayout(topLayout)
layout.addLayout(bottomLayout)
layout.setStretchFactor(topLayout, 1)
layout.setStretchFactor(bottomLayout, 0)
# SET LOAYOUT
self.setLayout(layout)
# LOAD DATA FILE, DIALOG BUTTON
def pushButtonClicked(self):
#LOAD FILE
pathfile0 = QFileDialog.getOpenFileName(self)
fname = basename(pathfile0[0])
data = read(fname)
self.fig.clear()
self.ax = self.fig.add_subplot(111)
self.ax.cla()
self.ax.plot(data[0])
self.ax.set_ylabel("Count")
self.ax.set_xlabel("Time Domain [s]")
self.ax.grid()
self.canvas.draw()
self.canvas.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
from obspy import read, UTCDateTime
def check_ms(fname) :
data = read(fname)
#myS = UTCDateTime("2020-02-12T02:30:00")
#myE = myS + 120
#data.trim(myS, myE)
data.plot()
check_ms('KE2.TS.00.BGE.2020.043')
Этот код загружает и отображает данные о землетрясениях в виде семян в чистом коде python без GUI.