"""Replot approximate NASA Figure 6 readings, not a physical simulation.
Place figure6-approximate.csv beside this script. Requires matplotlib.
"""
from pathlib import Path
import csv
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
D=Path(__file__).resolve().parent
with (D/'figure6-approximate.csv').open(encoding='utf-8') as f: rows=list(csv.DictReader(f))
plt.rcParams.update({'font.family':'DejaVu Sans','font.size':13,'text.color':'#e9f2ff','axes.labelcolor':'#e9f2ff','xtick.color':'#d4e3f5','ytick.color':'#d4e3f5','axes.edgecolor':'#7390b0','svg.fonttype':'none'})
fig,ax=plt.subplots(figsize=(8,7),facecolor='#08152c',layout='constrained');ax.set_facecolor('#0d203b')
for altitude,color,style in [(100000,'#71e0ef','-'),(125000,'#c8a6ff','--')]:
 r=[v for v in rows if int(v['altitude_ft'])==altitude]
 ax.plot([float(v['mach']) for v in r],[float(v['hall_parameter_beta']) for v in r],style,color=color,lw=2.5,marker='o',markersize=3,label=f'{altitude:,} ft')
ax.set(xlim=(0,24),ylim=(0,8),xticks=range(0,25,2),yticks=range(9),xlabel='Freestream Mach number',ylabel='Hall parameter, beta (dimensionless)')
ax.grid(alpha=.14);ax.legend(facecolor='#0d203b',edgecolor='#7390b0',labelcolor='#e9f2ff')
ax.set_title('Equilibrium air behind a normal shock\nMagnetic field: 1 T',loc='left',pad=15)
fig.suptitle('Approximate reading of NASA Figure 6',fontsize=17,fontweight='bold')
fig.savefig(D/'figure6-approximate.svg',metadata={'Description':'Approximate visual readings of calculated curves. Source prose/plot discrepancy remains unresolved. No independent solver reproduction.'})
fig.savefig(D/'figure6-approximate.png',dpi=160)
