In [1]:
%matplotlib inline
# load common things
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# big figures/
mpl.rcParams['savefig.dpi'] = 2 * mpl.rcParams['savefig.dpi']
coloram = [1,0.5,0];
colorbot = [0.12,0.47,0.71];
In [4]:
t = np.linspace(0,4,100)
am = 2 + 2 * np.exp(-(t/1.3)**2)
amflat = 4 * np.exp(-(t/2)**2)
t0 = 1.08;
pbot = 1.9 * np.tanh(t-t0)
with plt.xkcd():
plt.figure()
plt.hold(True)
plt.plot(t, am, color=coloram)
plt.plot(t[30:], amflat[30:], color=coloram,
linestyle='--', linewidth=1.5, zorder=1)
plt.plot(t, pbot, color=colorbot)
plt.ylim([0,5])
# label axes
ax = plt.gca()
xtickloc = 2.5
plt.xticks([0, t0, xtickloc])
plt.yticks([0])
plt.axvline(xtickloc, color='k',
linestyle='--', linewidth=1.5, zorder=1)
ax.xaxis.set_tick_params(top='off', bottom='off')
ax.yaxis.set_tick_params(left='off', right='off')
ax.xaxis.set_ticklabels(['EDDY IN\nDEEP WATER',
'EDDY MOVES\nON TO SLOPE',
'EDDY STOPS\nRADIATING'], size=8)
# mark difference
#plt.axhline(4, color='k', linestyle='--')
plt.annotate('', xy=[0.2,am.max()-0.1],
xytext=[0.2,am.min()+0.05],
arrowprops=dict(arrowstyle='<->', color=coloram))
plt.annotate('', xy=[0.05,am.min()+0.05],
xytext=[0.35,am.min()+0.05],
arrowprops=dict(arrowstyle='-', color=coloram))
plt.text(0.25, 2.7, 'LOST TO\nRADIATION', size=9, color=coloram)
# Easiest to draw axes as arrows using plt.annotate()
plt.box(None)
xlim = plt.xlim();
ylim = plt.ylim();
plt.annotate('', xy=[xlim[1],ylim[0]], xytext=[0,0],
arrowprops=dict(arrowstyle='->'))
plt.annotate('', xy=[xlim[0],ylim[1]], xytext=[0,0],
arrowprops=dict(arrowstyle='->'))
# fake x-axis label
dx=0.5; dy=0.25;
loc = [xlim[1]-dx, ylim[0]-dy];
plt.text(loc[0], loc[1], 'TIME', size=9)
# label lines
plt.annotate('ANGULAR\nMOMENTUM\n(BETA FORCE)', xy=[0.25,4], xytext=[1.05,4],
arrowprops=dict(arrowstyle='-', color=coloram),
size=10, ha='center', color=coloram)
plt.annotate('BOTTOM\nPRESSURE', xy=[t0+0.2,0.50], xytext=[0.3+(t0-1),0.5],
arrowprops=dict(arrowstyle='-',color=colorbot),
size=10, color=colorbot)
plt.annotate('IF FLAT BOTTOM', xy=[2.95,0.50], xytext=[3.3,0.5],
arrowprops=dict(arrowstyle='-', color=coloram),
size=10, color=coloram)
plt.text(3.25,2.15, 'EDDY STOPS\nCROSSING ISOBATHS',
fontsize=10, va='bottom', ha='center')
plt.savefig('images/force-timeseries-schematic.png', bbox_inches='tight')
In [67]:
with plt.xkcd():
plt.plot([-1,1,1,-1,-1],[-1,-1,1,1,-1], color='k')
plt.box(None)
plt.hold(True)
ax = plt.gca(); hfig = plt.gcf();
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
th = np.linspace(0,2*np.pi,100)
for r in np.linspace(0,0.5,8):
plt.plot(r*np.cos(th), r*np.sin(th), color='k')
plt.text(0.6,0, r'$\psi$', fontsize=24)
plt.axis('equal')
plt.savefig('images/integrate-schematic.png', bbox_inches='tight')
In [68]:
th = np.linspace(0,2*np.pi,100)
r = 1
with plt.xkcd():
#plt.plot(r*np.cos(th), r*np.sin(th), color='k')
ax = plt.gca()
plt.hold(True)
plt.axis('image')
plt.plot(0,0,'kx')
plt.xlim([-1.3,1.3])
plt.ylim([-1.3,1.3])
# mark velocity
plt.arrow(0,1,0.85,0, head_width=0.07, color='black')
plt.arrow(0,-1,-0.85,0, head_width=0.07, color='black')
plt.text(0,1.1,'U>0, y>0')
plt.text(0.05,0,'U=y=0')
plt.text(0,-1.2,'U<0, y<0')
# mark coriolis forces
colorcor = coloram
plt.arrow(0,1,0,-0.7, color=colorcor, head_width=0.07)
plt.arrow(0,-1,0,0.4, color=colorcor, head_width=0.07)
plt.text(0.15,0.5, 'fU', color=colorcor)
plt.text(0.15,-0.75, 'fU', color=colorcor)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.box(None)
plt.savefig('images/byuforce.png', bbox_inches='tight')
In [178]:
with plt.xkcd():
ax = plt.gca()
# southern coast
plt.arrow(0.75,0,-0.5,0, head_width=0.07, color=coloram) # β
plt.arrow(0.75,0,0.5,0, head_width=0.07, color=colorbot) # β_t
plt.text(0.3,-0.2, r'$\beta$', fontsize=18, color=coloram)
plt.text(1.25,-0.2, r'$\beta_t$', fontsize=18, color=colorbot)
# western coast
plt.arrow(-0.5,0,-0.5,0, head_width=0.07, color=coloram) # β
plt.arrow(-0.5,0,0,-0.5, head_width=0.07, color=colorbot) # β_t
plt.text(-1.0,-0.2, r'$\beta$', fontsize=18, color=coloram)
plt.text(-0.5,-0.7, r'$\beta_t$', fontsize=18, color=colorbot)
plt.xlim([-1.5,1.5])
plt.ylim([-1.,1])
# name coasts
plt.text(0.75,-0.5, 'SOUTHERN\nCOAST',
fontsize=10, va='center', ha='center')
plt.text(-1.25,0, 'WESTERN\nCOAST',
rotation=90, fontsize=10,va='center', ha='center')
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.box(None)
plt.savefig('images/betas.png', bbox_inches='tight');
In [230]:
y = np.linspace(-1,1,100)
z = np.linspace(-2,0,50)
[yy,zz] = np.meshgrid(y,z)
with plt.xkcd():
plt.contour(yy, zz, np.exp(-((yy/0.25)**2 + zz**2)),
levels=[0.05,0.33], colors=[coloram])
plt.plot(y, -1.5 - 0.4*y, color=colorbot)
plt.xlim([-1.5, 1.5])
ax = plt.gca()
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.box(None)
plt.annotate('L_z', xy=[0,-1.05], xytext=[1,-1],
arrowprops=dict(arrowstyle='-',color=coloram),
size=10, color=coloram)
plt.annotate('H', xy=[0,-1.5], xytext=[1,-1.5],
arrowprops=dict(arrowstyle='-', color=colorbot),
size=10, color=colorbot)
plt.savefig('images/slope-cut-eddy.png', bbox_inches='tight');
In [188]:
Out[188]: