import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', **{'family' : 'sans-serif'})
plt.rc('legend', fontsize=16)
f0, v0 = 1000, 340
vmin, vmax, num = 0, 40, 100
v = np.linspace(vmin, vmax, num)
fs1 = v0 / (v0 - v) * f0
fo1 = (v0 + v) / v0 * f0
fs2 = (v0 + v) / v0 * f0
fo2 = v0 / (v0 - v) * f0
fs3 = (v0 + v) / (v0 - v)* f0
fo3 = (v0 + v) / v0 * f0
fs4 = v0 / (v0 + v) * f0
fo4 = (v0 - v) / v0 * f0
fs5 = (v0 / (v0 - v))**2 * f0
fo5 = ((v0 + v) / v0)**2 * f0
fig, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots(2, 3, figsize=(12, 8), dpi=72)
fig.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, wspace=0.4, hspace=0.3)
line1_1, = ax1.plot(v, fs1, color='black', linestyle='-', linewidth=3, label='I')
line1_2, = ax1.plot(v, fo1, color='black', linestyle='--', linewidth=3, label='II')
ax1.legend(handles = [line1_1, line1_2], loc='upper left')
ax1.set_xlabel(r'$v~\mathrm{(m/s)}$', fontsize=16)
ax1.set_ylabel(r'$f~\mathrm{(Hz)}$', fontsize=16)
ax1.tick_params(axis='both', labelsize=14)
ax1.set_title('(A)', loc='left', fontsize=20)
line2_1, = ax2.plot(v, fs2, color='black', linestyle='-', linewidth=3, label='I')
line2_2, = ax2.plot(v, fo2, color='black', linestyle='--', linewidth=3, label='II')
ax2.legend(handles = [line2_1, line2_2], loc='upper left')
ax2.set_xlabel(r'$v~\mathrm{(m/s)}$', fontsize=16)
ax2.set_ylabel(r'$f~\mathrm{(Hz)}$', fontsize=16)
ax2.tick_params(axis='both', labelsize=14)
ax2.set_title('(B)', loc='left', fontsize=20)
line3_1, = ax3.plot(v, fs3, color='black', linestyle='-', linewidth=3, label='I')
line3_2, = ax3.plot(v, fo3, color='black', linestyle='--', linewidth=3, label='II')
ax3.legend(handles = [line3_1, line3_2], loc='upper left')
ax3.set_xlabel(r'$v~\mathrm{(m/s)}$', fontsize=16)
ax3.set_ylabel(r'$f~\mathrm{(Hz)}$', fontsize=16)
ax3.tick_params(axis='both', labelsize=14)
ax3.set_title('(C)', loc='left', fontsize=20)
line4_1, = ax4.plot(v, fs4, color='black', linestyle='-', linewidth=3, label='I')
line4_2, = ax4.plot(v, fo4, color='black', linestyle='--', linewidth=3, label='II')
ax4.legend(handles = [line4_1, line4_2], loc='upper right')
ax4.set_xlabel(r'$v~\mathrm{(m/s)}$', fontsize=16)
ax4.set_ylabel(r'$f~\mathrm{(Hz)}$', fontsize=16)
ax4.tick_params(axis='both', labelsize=14)
ax4.set_title('(D)', loc='left', fontsize=20)
line5_1, = ax5.plot(v, fs5, color='black', linestyle='-', linewidth=3, label='I')
line5_2, = ax5.plot(v, fo5, color='black', linestyle='--', linewidth=3, label='II')
ax5.legend(handles = [line5_1, line5_2], loc='upper left')
ax5.set_xlabel(r'$v~\mathrm{(m/s)}$', fontsize=16)
ax5.set_ylabel(r'$f~\mathrm{(Hz)}$', fontsize=16)
ax5.tick_params(axis='both', labelsize=14)
ax5.set_title('(E)', loc='left', fontsize=20)
ax6.axis('off')
fig.savefig('DopplerEffectPlot.svg')
fig.savefig('DopplerEffectPlot.png')
fig.show()