autoPyLoT: figure beautification
also added nav toolbar to TuneAutopicker
This commit is contained in:
		
							parent
							
								
									77b076d560
								
							
						
					
					
						commit
						4d9c7b02cf
					
				
							
								
								
									
										16
									
								
								QtPyLoT.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								QtPyLoT.py
									
									
									
									
									
								
							| @ -556,12 +556,14 @@ class MainWindow(QMainWindow): | ||||
|         self.drawPicks(picktype=type) | ||||
|         self.draw() | ||||
| 
 | ||||
|     def getCurrentEvent(self): | ||||
|         for event in self.project.eventlist: | ||||
|             if event.path == self.getCurrentEventPath(): | ||||
|     def getCurrentEvent(self, eventlist=None): | ||||
|         if not eventlist: | ||||
|             eventlist = self.project.eventlist | ||||
|         for event in eventlist: | ||||
|             if event.path == self.getCurrentEventPath(eventlist): | ||||
|                 return event | ||||
| 
 | ||||
|     def getCurrentEventPath(self): | ||||
|     def getCurrentEventPath(self, eventlist=None): | ||||
|         return str(self.eventBox.currentText().split('|')[0]).strip() | ||||
|          | ||||
|     def getLastEvent(self): | ||||
| @ -604,10 +606,10 @@ class MainWindow(QMainWindow): | ||||
|             else: | ||||
|                 return | ||||
| 
 | ||||
|     def getWFFnames_from_eventlist(self): | ||||
|     def getWFFnames_from_eventlist(self, eventlist=None): | ||||
|         if self.dataStructure: | ||||
|             searchPath = self.dataStructure.expandDataPath() | ||||
|             directory = self.getCurrentEventPath() | ||||
|             directory = self.getCurrentEventPath(eventlist) | ||||
|             self.fnames = [os.path.join(directory, f) for f in os.listdir(directory)] | ||||
|         else: | ||||
|             raise DatastructureError('not specified') | ||||
| @ -940,7 +942,7 @@ class MainWindow(QMainWindow): | ||||
|         #     ans = self.data.setWFData(self.getWFFnames()) | ||||
|         # else: | ||||
|         #     ans = False | ||||
|         self.data.setWFData(self.getWFFnames_from_eventlist()) | ||||
|         self.data.setWFData(self.getWFFnames_from_eventlist(self.project.eventlist)) | ||||
|         self._stime = full_range(self.get_data().getWFData())[0] | ||||
| 
 | ||||
|     def connectWFplotEvents(self): | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| 12e6-dirty | ||||
| 77b07-dirty | ||||
|  | ||||
| @ -700,7 +700,7 @@ def autopickstation(wfstream, pickparam, verbose=False, iplot=0, fig_dict=None): | ||||
| 
 | ||||
|         if len(edat[0]) > 1 and len(ndat[0]) > 1 and Sflag == 1: | ||||
|             # plot horizontal traces | ||||
|             ax2 = fig.add_subplot(312) | ||||
|             ax2 = fig.add_subplot(3,1,2,sharex=ax1) | ||||
|             th1data = np.arange(0, | ||||
|                                 trH1_filt.stats.npts / | ||||
|                                 trH1_filt.stats.sampling_rate, | ||||
| @ -749,7 +749,7 @@ def autopickstation(wfstream, pickparam, verbose=False, iplot=0, fig_dict=None): | ||||
|             ax2.set_ylabel('Normalized Counts') | ||||
|             #fig.suptitle(trH1_filt.stats.starttime) | ||||
| 
 | ||||
|             ax3 = fig.add_subplot(313) | ||||
|             ax3 = fig.add_subplot(3,1,3, sharex=ax1) | ||||
|             th2data = np.arange(0, | ||||
|                                 trH2_filt.stats.npts / | ||||
|                                 trH2_filt.stats.sampling_rate, | ||||
|  | ||||
| @ -268,22 +268,28 @@ class AICPicker(AutoPicker): | ||||
|                 ax1.plot([self.Pick, self.Pick], [-0.1, 0.5], 'b', linewidth=2, label='AIC-Pick') | ||||
|             ax1.set_xlabel('Time [s] since %s' % self.Data[0].stats.starttime) | ||||
|             ax1.set_yticks([]) | ||||
|             ax1.set_title(self.Data[0].stats.station) | ||||
|             ax1.legend() | ||||
|              | ||||
|             if self.Pick is not None: | ||||
|                 ax2 = fig.add_subplot(212) | ||||
|                 ax2 = fig.add_subplot(2,1,2, sharex=ax1) | ||||
|                 ax2.plot(self.Tcf, x, 'k', label='Data') | ||||
|                 ax2.plot(self.Tcf[inoise], self.Data[0].data[inoise], label='Noise Window') | ||||
|                 ax2.plot(self.Tcf[isignal], self.Data[0].data[isignal], 'r', label='Signal Window') | ||||
|                 ax2.plot(self.Tcf[islope], dataslope, 'g--', label='Slope Window') | ||||
|                 ax1.axvspan(self.Tcf[inoise[0]],self.Tcf[inoise[-1]], color='y', alpha=0.2, lw=0, label='Noise Window') | ||||
|                 ax1.axvspan(self.Tcf[isignal[0]],self.Tcf[isignal[-1]], color='b', alpha=0.2, lw=0, label='Signal Window') | ||||
|                 ax1.axvspan(self.Tcf[islope[0]],self.Tcf[islope[-1]], color='g', alpha=0.2, lw=0, label='Slope Window') | ||||
|                  | ||||
|                 ax2.axvspan(self.Tcf[inoise[0]],self.Tcf[inoise[-1]], color='y', alpha=0.2, lw=0, label='Noise Window') | ||||
|                 ax2.axvspan(self.Tcf[isignal[0]],self.Tcf[isignal[-1]], color='b', alpha=0.2, lw=0, label='Signal Window') | ||||
|                 ax2.axvspan(self.Tcf[islope[0]],self.Tcf[islope[-1]], color='g', alpha=0.2, lw=0, label='Slope Window')                 | ||||
|                 ax2.plot(self.Tcf[islope], datafit, 'g', linewidth=2, label='Slope') | ||||
|                 ax2.set_title('Station %s, SNR=%7.2f, Slope= %12.2f counts/s' % (self.Data[0].stats.station, | ||||
|                  | ||||
|                 ax1.set_title('Station %s, SNR=%7.2f, Slope= %12.2f counts/s' % (self.Data[0].stats.station, | ||||
|                                                                                 self.SNR, self.slope)) | ||||
|                 ax2.set_xlabel('Time [s] since %s' % self.Data[0].stats.starttime) | ||||
|                 ax2.set_ylabel('Counts') | ||||
|                 ax2.set_yticks([]) | ||||
|                 ax2.legend() | ||||
|             else: | ||||
|                 ax1.set_title(self.Data[0].stats.station) | ||||
| 
 | ||||
|         if self.Pick == None: | ||||
|             print('AICPicker: Could not find minimum, picking window too short?') | ||||
|  | ||||
| @ -105,12 +105,11 @@ def earllatepicker(X, nfac, TSNR, Pick1, iplot=None, stealth_mode=False, fig=Non | ||||
| 
 | ||||
|     if iplot > 1: | ||||
|         if not fig: | ||||
|             print('New Figure.........................') | ||||
|             fig = plt.figure()#iplot) | ||||
|         ax = fig.add_subplot(111) | ||||
|         ax.plot(t, x, 'k', label='Data') | ||||
|         ax.plot(t[inoise], x[inoise], label='Noise Window') | ||||
|         ax.plot(t[isignal], x[isignal], 'r', label='Signal Window') | ||||
|         ax.axvspan(t[inoise[0]], t[inoise[-1]], color='y', alpha=0.2, lw=0, label='Noise Window') | ||||
|         ax.axvspan(t[isignal[0]], t[isignal[-1]], color='b', alpha=0.2, lw=0, label='Signal Window') | ||||
|         ax.plot([t[0], t[int(len(t)) - 1]], [nlevel, nlevel], '--k', label='Noise Level') | ||||
|         ax.plot(t[isignal[zc]], np.zeros(len(zc)), '*g', | ||||
|                 markersize=14, label='Zero Crossings') | ||||
| @ -292,7 +291,7 @@ def fmpicker(Xraw, Xfilt, pickwin, Pick, iplot=None, fig=None): | ||||
|         ax1.set_title('First-Motion Determination, %s, Unfiltered Data' % Xraw[ | ||||
|             0].stats.station) | ||||
| 
 | ||||
|         ax2=fig.add_subplot(212) | ||||
|         ax2=fig.add_subplot(2,1,2, sharex=ax1) | ||||
|         ax2.set_title('First-Motion Determination, Filtered Data') | ||||
|         ax2.plot(t, xfilt, 'k') | ||||
|         ax2.plot([Pick, Pick], [max(xfilt), -max(xfilt)], 'b', | ||||
| @ -693,8 +692,8 @@ def checksignallength(X, pick, TSNR, minsiglength, nfac, minpercent, iplot=0, fi | ||||
|             fig = plt.figure()#iplot) | ||||
|         ax = fig.add_subplot(111) | ||||
|         ax.plot(t, rms, 'k', label='RMS Data') | ||||
|         ax.plot(t[inoise], rms[inoise], 'c', label='RMS Noise Window') | ||||
|         ax.plot(t[isignal], rms[isignal], 'r', label='RMS Signal Window') | ||||
|         ax.axvspan(t[inoise[0]], t[inoise[-1]], color='y', alpha=0.2, lw=0, label='Noise Window')         | ||||
|         ax.axvspan(t[isignal[0]], t[isignal[-1]], color='b', alpha=0.2, lw=0, label='Signal Window')         | ||||
|         ax.plot([t[isignal[0]], t[isignal[len(isignal) - 1]]], | ||||
|                 [minsiglevel, minsiglevel], 'g', linewidth=2, label='Minimum Signal Level') | ||||
|         ax.plot([pick, pick], [min(rms), max(rms)], 'b', linewidth=2, label='Onset') | ||||
| @ -964,11 +963,10 @@ def checkZ4S(X, pick, zfac, checkwin, iplot, fig=None): | ||||
|             fig = plt.figure() | ||||
|         ax = fig.add_subplot(111) | ||||
|         ax.plot(tz, z / max(z), 'k') | ||||
|         ax.plot(tz[isignal], z[isignal] / max(z), 'r') | ||||
|         ax.axvspan(tz[isignal[0]], tz[isignal[-1]], color='b', alpha=0.2, | ||||
|                    lw=0, label='Signal Window') | ||||
|         ax.plot(te, edat[0].data / max(edat[0].data) + 1, 'k') | ||||
|         ax.plot(te[isignal], edat[0].data[isignal] / max(edat[0].data) + 1, 'r') | ||||
|         ax.plot(tn, ndat[0].data / max(ndat[0].data) + 2, 'k') | ||||
|         ax.plot(tn[isignal], ndat[0].data[isignal] / max(ndat[0].data) + 2, 'r') | ||||
|         ax.plot([tz[isignal[0]], tz[isignal[len(isignal) - 1]]], | ||||
|                 [minsiglevel / max(z), minsiglevel / max(z)], 'g', | ||||
|                 linewidth=2, label='Minimum Signal Level') | ||||
|  | ||||
| @ -1294,8 +1294,8 @@ class TuneAutopicker(QWidget): | ||||
|         self.trace_layout = QtGui.QHBoxLayout() | ||||
|         self.parameter_layout = QtGui.QVBoxLayout() | ||||
| 
 | ||||
|         self.main_layout.addLayout(self.tune_layout) | ||||
|         self.main_layout.addLayout(self.trace_layout)         | ||||
|         self.main_layout.addLayout(self.tune_layout) | ||||
|         self.setLayout(self.main_layout) | ||||
|          | ||||
|     def init_eventlist(self): | ||||
| @ -1360,10 +1360,8 @@ class TuneAutopicker(QWidget): | ||||
|         self.stb_names = ['aicARHfig', 'refSpick', 'el_S1pick', 'el_S2pick'] | ||||
| 
 | ||||
|     def fill_tabs(self, canvas_dict): | ||||
|         try: | ||||
|             self.main_tabs.addTab(canvas_dict['mainFig'], 'Overview') | ||||
|         except Exception as e: | ||||
|             self.main_tabs.addTab(QtGui.QWidget(), 'Overview')             | ||||
|         id = self.main_tabs.addTab(self.gen_tab_widget('Overview', canvas_dict['mainFig']), 'Overview') | ||||
|         self.main_tabs.setTabEnabled(id, bool(self.fig_dict['mainFig'].axes)) | ||||
|         self.main_tabs.addTab(self.p_tabs, 'P') | ||||
|         self.main_tabs.addTab(self.s_tabs, 'S') | ||||
|         self.fill_p_tabs(canvas_dict) | ||||
| @ -1375,7 +1373,7 @@ class TuneAutopicker(QWidget): | ||||
| 
 | ||||
|     def fill_p_tabs(self, canvas_dict): | ||||
|         for name in self.ptb_names: | ||||
|             id = self.p_tabs.addTab(canvas_dict[name], name) | ||||
|             id = self.p_tabs.addTab(self.gen_tab_widget(name, canvas_dict[name]), name) | ||||
|             self.p_tabs.setTabEnabled(id, bool(self.fig_dict[name].axes)) | ||||
|             try: | ||||
|                 self.fig_dict[name].tight_layout() | ||||
| @ -1384,13 +1382,21 @@ class TuneAutopicker(QWidget): | ||||
|                  | ||||
|     def fill_s_tabs(self, canvas_dict): | ||||
|         for name in self.stb_names: | ||||
|             figure = self.fig_dict[name] | ||||
|             id = self.s_tabs.addTab(canvas_dict[name], name) | ||||
|             id = self.s_tabs.addTab(self.gen_tab_widget(name, canvas_dict[name]), name) | ||||
|             self.s_tabs.setTabEnabled(id, bool(self.fig_dict[name].axes)) | ||||
|             try: | ||||
|                 self.fig_dict[name].tight_layout() | ||||
|             except: | ||||
|                 pass | ||||
| 
 | ||||
|     def gen_tab_widget(self, name, canvas): | ||||
|         widget = QtGui.QWidget() | ||||
|         v_layout = QtGui.QVBoxLayout() | ||||
|         v_layout.addWidget(canvas) | ||||
|         v_layout.addWidget(NavigationToolbar2QT(canvas, self)) | ||||
|         widget.setLayout(v_layout) | ||||
|         return widget | ||||
|      | ||||
|                  | ||||
| class PropertiesDlg(QDialog): | ||||
|     def __init__(self, parent=None, infile=None): | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user