代码:
import scipy.io
import matplotlib
import numpy as np
import matplotlib.pylab as plt
matplotlib.use('TkAgg')
from mpl_toolkits.axes_grid1 import make_axes_locatable
import cv2font21 = {'family': 'Times New Roman','weight': 'normal','size': 21,}font18 = {'family': 'Times New Roman','weight': 'normal','size': 18,}def pain_seg_seismic_data(para_seismic_data):'''Plotting seismic data images of SEG salt datasets:param para_seismic_data: Seismic data (400 x 301) (numpy):param is_colorbar: Whether to add a color bar (1 means add, 0 is the default, means don't add)'''fig, ax = plt.subplots(figsize=(6.2, 8), dpi = 120)im = ax.imshow(para_seismic_data, extent=[0, 300, 400, 0], cmap=plt.cm.seismic, vmin=-0.4, vmax=0.44)ax.set_xlabel('Position (km)', font21)ax.set_ylabel('Time (s)', font21)ax.set_xticks(np.linspace(0, 300, 5))ax.set_yticks(np.linspace(0, 400, 5))ax.set_xticklabels(labels = [0,0.75,1.5,2.25,3.0], size=21)ax.set_yticklabels(labels = [0.0,0.50,1.00,1.50,2.00], size=21)plt.rcParams['font.size'] = 14 # Set colorbar font sizedivider = make_axes_locatable(ax)cax = divider.append_axes("top", size="3%", pad=0.32)plt.colorbar(im, ax=ax, cax=cax, orientation='horizontal')plt.subplots_adjust(bottom=0.08, top=0.98, left=0.11, right=0.99)plt.show()def pain_openfwi_seismic_data(para_seismic_data):'''Plotting seismic data images of openfwi dataset:param para_seismic_data: Seismic data (1000 x 70) (numpy)'''data = cv2.resize(para_seismic_data, dsize=(400, 301), interpolation=cv2.INTER_CUBIC)fig, ax = plt.subplots(figsize=(6.1, 8), dpi = 120)im = ax.imshow(data, extent=[0, 0.7, 1.0, 0], cmap=plt.cm.seismic, vmin=-18, vmax=19)ax.set_xlabel('Position (km)', font21)ax.set_ylabel('Time (s)', font21)ax.set_xticks(np.linspace(0, 0.7, 5))ax.set_yticks(np.linspace(0, 1.0, 5))ax.set_xticklabels(labels=[0, 0.17, 0.35, 0.52, 0.7], size=21)ax.set_yticklabels(labels=[0, 0.25, 0.5, 0.75, 1.0], size=21)plt.rcParams['font.size'] = 14 # Set colorbar font sizedivider = make_axes_locatable(ax)cax = divider.append_axes("top", size="3%", pad=0.3)plt.colorbar(im, ax=ax, cax=cax, orientation='horizontal')plt.subplots_adjust(bottom=0.08, top=0.98, left=0.11, right=0.99)plt.show()def pain_openfwi_velocity_model(para_velocity_model):'''Plotting seismic data images of openfwi dataset:param para_velocity_model: Velocity model (70 x 70) (numpy):param min_velocity: Upper limit of velocity in the velocity model:param max_velocity: Lower limit of velocity in the velocity model:param is_colorbar: Whether to add a color bar (1 means add, 0 is the default, means don't add):return:'''fig, ax = plt.subplots(figsize=(5.8, 6), dpi=150)im = ax.imshow(para_velocity_model, extent=[0, 0.7, 0.7, 0])ax.set_xlabel('Position (km)', font18)ax.set_ylabel('Depth (km)', font18)ax.set_xticks(np.linspace(0, 0.7, 8))ax.set_yticks(np.linspace(0, 0.7, 8))ax.set_xticklabels(labels=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7], size=18)ax.set_yticklabels(labels=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7], size=18)plt.rcParams['font.size'] = 14 # Set colorbar font sizedivider = make_axes_locatable(ax)cax = divider.append_axes("top", size="3%", pad=0.35)plt.colorbar(im, ax=ax, cax=cax, orientation='horizontal')plt.subplots_adjust(bottom=0.10, top=0.95, left=0.13, right=0.95)plt.show()def pain_seg_velocity_model(para_velocity_model):''':param para_velocity_model: Velocity model (200 x 301) (numpy):param min_velocity: Upper limit of velocity in the velocity model:param max_velocity: Lower limit of velocity in the velocity model:return:'''fig, ax = plt.subplots(figsize=(5.8, 4.3), dpi=150)im = ax.imshow(para_velocity_model, extent=[0, 3, 2, 0])ax.set_xlabel('Position (km)', font18)ax.set_ylabel('Depth (km)', font18)ax.tick_params(labelsize=14)plt.rcParams['font.size'] = 14 # Set colorbar font sizedivider = make_axes_locatable(ax)cax = divider.append_axes("top", size="3%", pad=0.32)plt.colorbar(im, ax=ax, cax=cax, orientation='horizontal')plt.subplots_adjust(bottom=0.12, top=0.95, left=0.11, right=0.99)plt.show()if __name__ == '__main__':# SEGseismic_SEGReal = scipy.io.loadmat(r"C:\Users\86183\PycharmProjects\FWI\simple_data\seismic_SEGReal.mat")["data"]vmodel_SEGReal = scipy.io.loadmat(r"C:\Users\86183\PycharmProjects\FWI\simple_data\vmodel_SEGReal.mat")["data"]seismic_SEGSimulation = scipy.io.loadmat(r"C:\Users\86183\PycharmProjects\FWI\simple_data\seismicseismic_SEGSimulation.mat")["data"]vmodel_SEGSimulation = scipy.io.loadmat(r"C:\Users\86183\PycharmProjects\FWI\simple_data\vmodel_SEGSimulation.mat")["data"]# OpenFWIseismic_curvefaulta = np.load(r"C:\Users\86183\PycharmProjects\FWI\simple_data\seismic_openfwi_CurveFaultA.npy")vmodel_curvefaulta = np.load(r"C:\Users\86183\PycharmProjects\FWI\simple_data\vmodel_openfwi_CurveFaultA.npy")# SEGprint(seismic_SEGReal.shape)print(vmodel_SEGReal.shape)print(seismic_SEGSimulation.shape)print(vmodel_SEGSimulation.shape)# OpenFWIprint(seismic_curvefaulta.shape)print(vmodel_curvefaulta.shape)# showpain_seg_seismic_data(seismic_SEGReal[:,:,15])pain_seg_velocity_model(vmodel_SEGReal)pain_seg_seismic_data(seismic_SEGSimulation[:, :, 15])pain_seg_velocity_model(vmodel_SEGSimulation)pain_openfwi_seismic_data(seismic_curvefaulta[300,2,:,:])pain_openfwi_velocity_model(vmodel_curvefaulta[300,0,:,:])# show tracetrace_id = 150fig,ax = plt.subplots(figsize = (6.0,5.0),dpi = 150)trace_curve = seismic_SEGSimulation[:, trace_id,15]im = ax.plot(trace_curve,label = "Middle trace")ax.set_xlabel("Time", font18)ax.set_ylabel("Amplitude",font18)plt.legend()plt.show()
结果: