Kernel: Python 3 (system-wide)
In [3]:
import os import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms import scipy.integrate as integrate from scipy import signal from scipy.signal import find_peaks from matplotlib.lines import Line2D plt.style.use('../jfm.mplstyle') rainbow = np.loadtxt("../rainbow.tsv") def array2cmpa(X): from matplotlib import colors # Assuming array is Nx3, where x3 gives RGB values # Append 1's for the alpha channel, to make X Nx4 X = np.c_[X,np.ones(len(X))] return colors.LinearSegmentedColormap.from_list('my_colormap', X) rainbow_map = array2cmpa(rainbow) colormap = rainbow_map #'coolwarm' #'plasma' #rainbow_map
In [4]:
!find ../Experimental_Dataset -type f -name "elevation.csv.gz" | xargs dirname | sort | grep "sol3rd" | tee "data_directories.txt" > /dev/null
In [5]:
with open("data_directories.txt","r") as data_directories_file: data_directories = data_directories_file.read().splitlines() amp = 'a1.5cm' locs = ['x=-02.54cm','x=+00.00cm','x=+02.54cm','x=+07.62cm'] xlim = (-2,2) ylim = (57,80) dx,dt,h,g = 0.3,1/125,50,9810 t0 = np.sqrt(h/g) fig, axes = plt.subplots(ncols=4,nrows=2,figsize=(5.0,3.5),sharey='all',sharex='all',layout='constrained') kwargs = {'vmin':-0.07,'vmax':0.50,'cmap':colormap} vmin,vmax = kwargs['vmin'],kwargs['vmax'] levels = np.arange(vmin,vmax,0.03) for axcol, loc in zip(axes.T,locs): data_dirs = [d for d in data_directories if loc in d and amp in d] for data_dir, ax in zip(data_dirs,axcol): time = np.loadtxt(f"{data_dir}/time.csv",delimiter=',',dtype=int) t_off = np.loadtxt(f"{data_dir}/time_offset.csv") space = np.loadtxt(f"{data_dir}/space.csv",delimiter=',',dtype=int) elev = np.loadtxt(f"{data_dir}/elevation.csv",delimiter=',') space = space*dx/h time = (time*dt - t_off)/t0 elev = elev/h X,T = np.meshgrid(space,time) cmp = ax.pcolormesh(X,T,elev,shading='nearest',**kwargs) ctl = ax.contour(X,T,elev,levels=levels,colors='k',linewidths=0.25) ax.set_xlim(*xlim) ax.set_ylim(*ylim) for ax in axes[:,0]: ax.set_ylabel(r'$t$') for ax in axes[1,:]: ax.set_xlabel(r'$y$') titles = [r'$x=-0.508$',r'$x=0^+$',r'$x=0.508$',r'$x=1.52$'] for ax,title in zip(axes[0,:],titles): ax.set_title(title) cbar = fig.colorbar(cmp, ax=axes.ravel().tolist(),location='right',shrink=0.70) cbar.ax.set_title(r'$\eta$') cbar.add_lines(ctl) #labels = ['a)', 'b)', 'c)', 'd)', 'e)', 'f)', 'g)', 'h)'] #for label, ax in zip(labels, axes[:,0]): # trans = mtransforms.ScaledTranslation(-29/72, 7/72, fig.dpi_scale_trans) # ax.text(0.0, 1.0, label, transform=ax.transAxes + trans, # fontsize='9.0', verticalalignment='top', fontfamily='Times New Roman', # bbox=dict(facecolor='1.0', edgecolor='none', pad=2.0)) plt.savefig('Fig_16.jpg') plt.show()
Out[5]: