import%20marimo%0A%0A__generated_with%20%3D%20%220.16.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo%2C%20plot_airliner%2C%20plot_nasa_sts124%2C%20plot_spacex_jcsat14)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%20Max%20Q%20-%20Maximum%20Dynamic%20Pressure%0A%0A%20%20%20%20During%20a%20rocket%20launch%20the%20commentator%20will%20often%20call%20out%20%E2%80%9CMax%20Q%E2%80%9D%20at%20a%20specific%20point%20in%20time%20during%20the%20launch.%20This%20is%20the%20point%20at%20which%20the%20dynamic%20pressure%20acting%20on%20the%20rocket%20will%20be%20at%20it%E2%80%99s%20maximum.%0A%0A%20%20%20%20The%20dynamic%20pressure%20or%20Q%20is%20the%20product%20of%20the%20air-density%20and%20the%20velocity%20squared%20of%20the%20object%20travelling%20through%20the%20air.%0A%0A%20%20%20%20%24%24%5Cmathrm%7B%7BDynamic%5C%20Pressure%5C%20%7D%7D%20(Q)%20%3D%20%5Cfrac%7B%7B1%7D%7D%7B%7B2%7D%7D%20%5Crho%20V%5E2%24%24%0A%0A%20%20%20%20The%20SI%20unit%20for%20pressure%20is%20the%20pascal.%20One%20pascal%20is%20the%20pressure%20exerted%20by%20a%20force%20of%20magnitude%20of%20one%20newton%20perpendicularly%20upon%20an%20area%20of%20one%20square%20meter.%0A%0A%20%20%20%20SpaceX%20provide%20a%20webcast%20of%20their%20launches%20which%20includes%20a%20simple%20telemetry%20display%20showing%20the%20rocket%E2%80%99s%20current%20speed%20and%20altitude.%0A%0A%20%20%20%20%7Bmo.image(%22public%2FMaxQ%2Fspacexjcsat14webcast.png%22%2C%20width%3D800)%7D%0A%0A%20%20%20%20Using%20the%20International%20Standard%20Atmosphere%20model%20to%20lookup%20the%20density%20at%20each%20altitude%20reported%20in%20the%20telemetry%20and%20using%20the%20reported%20velocity%20at%20that%20point%20we%20can%20calculate%20the%20dynamic%20pressure%20for%20each%20telemetry%20point.%20Plotting%20the%20dynamic%20pressure%20for%20the%20telemetry%20points%20we%E2%80%99ll%20be%20able%20to%20see%20at%20which%20point%20in%20terms%20of%20altitude%20and%20velocity%20the%20rocket%20experiences%20it%E2%80%99s%20maximum%20dynamic%20pressure.%0A%0A%20%20%20%20Here%20is%20a%20graph%20based%20on%20telemetry%20data%20from%20SpaceX%E2%80%99s%20JCSAT-14%20launch.%0A%0A%20%20%20%20%7Bplot_spacex_jcsat14()%7D%0A%0A%20%20%20%20The%20maximum%20dynamic%20pressure%20(Max-Q)%20experienced%20is%20roughly%2030%20kPa%20at%20an%20altitude%20of%20roughly%2011.5%20km%20while%20travelling%20at%20a%20speed%20of%201500%20km%2Fh.%0A%0A%20%20%20%20As%20a%20comparison%20here%20is%20a%20graph%20for%20the%20Space%20Shuttle%20launch%20STS-124.%20The%20telemetry%20supplied%20also%20includes%20the%20throttle%20position%2C%20and%20you%E2%80%99ll%20notice%20that%20the%20main%20engines%20of%20the%20Space%20Shuttle%20are%20actually%20throttled%20back%20significantly%20to%2072%25%20for%20a%20couple%20of%20seconds.%0A%0A%20%20%20%20This%20is%20done%20to%20limit%20the%20maximum%20dynamic%20pressure%20that%20the%20Space%20Shuttle%20will%20need%20to%20handle%20during%20a%20launch.%0A%0A%20%20%20%20%7Bplot_nasa_sts124()%7D%0A%0A%20%20%20%20The%20maximum%20dynamic%20pressure%20experienced%20by%20the%20Space%20Shuttle%20is%20roughly%2035%20kPa%20at%20an%20altitude%20of%20roughly%2010.8%20km%20and%20travelling%20at%20a%20speed%20of%20roughly%201550%20km%2Fh.%20So%20in%20the%20same%20ballpark%20in%20terms%20of%20altitude%20and%20speed%20and%20dynamic%20pressure%20as%20the%20SpaceX%20rocket.%0A%0A%20%20%20%20You%E2%80%99ll%20notice%20a%20kink%20in%20the%20velocity%20squared%20line%20at%20around%20about%20the%2040%20km%20mark%20even%20though%20the%20main%20engine%20throttle%20percentage%20doesn%E2%80%99t%20change.%20This%20is%20due%20to%20the%20separation%20of%20the%20two%20solid%20rocket%20boosters.%0A%0A%20%20%20%20I%20thought%20it%20would%20be%20interesting%20to%20compare%20the%20maximum%20dynamic%20pressure%20experienced%20by%20an%20airliner.%20So%20I%20used%20some%20data%20from%20the%20Flightradar24%20website%20that%20tracks%20ADS-B%20broadcast%20by%20airliners%20broadcasting%20their%20altitude%2C%20ground%20speed%20etc.%0A%0A%20%20%20%20So%20assuming%20there%20isn%E2%80%99t%20any%20significant%20wind%20I%E2%80%99m%20assuming%20that%20the%20ground%20speed%20matches%20the%20true%20airspeed.%20Then%20again%20using%20the%20International%20Standard%20Atmosphere%20(ISA)%20we%20can%20lookup%20the%20density%20for%20the%20specific%20altitude%20and%20use%20that%20to%20calculate%20the%20dynamic%20pressure.%0A%0A%20%20%20%20%7Bplot_airliner()%7D%0A%0A%20%20%20%20So%20it%20looks%20like%20the%20maximum%20dynamic%20pressure%20is%20experienced%20at%20cruising%20altitude%20and%20cruising%20speed%20and%20roughly%20peaks%20around%2025%20kPa.%20In%20other%20words%20an%20airliner%E2%80%99s%20maximum%20dynamic%20pressure%20that%20it%20experiences%20is%20roughly%20in%20the%20same%20ball%20park%20as%20experienced%20by%20a%20SpaceX%20rocket%20and%20the%20Space%20Shuttle%20and%20the%20airliner%20experiences%20it%20at%20roughly%20the%20same%20altitude.%0A%0A%20%20%20%20Actually%20on%20further%20review%2C%20a%20TAS%20of%20642kt%20at%2032%2C000ft%20would%20equate%20to%20Mach%201.1%2C%20so%20there%20definitely%20was%20a%20large%20wind%0A%20%20%20%20component.%20Assuming%20a%20typical%20maximum%20Mach%20of%200.85%20for%20an%20airliner%20at%20cruising%20altitude%2C%20that%20equates%20to%20a%20dynamic%0A%20%20%20%20pressure%20of%2011%20kPa%2C%20so%20actually%20a%20little%20less%20than%20half%20compared%20to%20the%20SpaceX%20rocket%20and%20the%20Space%20Shuttle.%0A%0A%20%20%20%20To%20get%20a%20feel%20for%20how%20much%20pressure%2025%20-%2035%20kPa%20is%20remember%20it%E2%80%99s%20the%20equivalent%20to%2025%2C000%20-%2035%2C000%20%24%5Cfrac%7B%7BN%7D%7D%7B%7Bm%5E2%7D%7D%24.%0A%20%20%20%20Which%20is%20roughly%202%2C500%20-%203%2C500%20kg%20sitting%20on%20a%201%20square%20meter%20surface.%0A%0A%20%20%20%20Now%20the%20palm%20of%20your%20hand%20is%20roughly%2010%20x%2010%20cm%2C%20i.e.%200.01%20%24m%5E2%24%2C%20so%20it%E2%80%99s%20the%20equivalent%20of%20holding%2025%20-%2035%20kg%20in%20the%20palm%20of%20your%20hand.%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Code%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20ISA%20import%20ISAtmosphere%0A%0A%20%20%20%20ISA%20%3D%20ISAtmosphere()%0A%20%20%20%20return%20ISA%2C%20mo%2C%20plt%0A%0A%0A%40app.cell%0Adef%20_(ISA)%3A%0A%20%20%20%20def%20std_atmosphere_densities(start%2C%20end%2C%20increment)%3A%0A%20%20%20%20%20%20%20%20alts%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20rhos%20%3D%20%5B%5D%0A%0A%20%20%20%20%20%20%20%20for%20h%20in%20range(start%2C%20end%2C%20increment)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_%2C%20rho%2C%20_%2C%20_%20%3D%20ISA.state(h)%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20alts.append(h%2F1000)%0A%20%20%20%20%20%20%20%20%20%20%20%20rhos.append(rho)%0A%0A%20%20%20%20%20%20%20%20return%20(alts%2C%20rhos)%0A%20%20%20%20return%20(std_atmosphere_densities%2C)%0A%0A%0A%40app.cell%0Adef%20_(ISA%2C%20mo%2C%20plt%2C%20std_atmosphere_densities)%3A%0A%20%20%20%20def%20plot_spacex_jcsat14()%3A%0A%20%20%20%20%20%20%20%20(alts%2C%20rhos)%20%3D%20std_atmosphere_densities(0%2C%2066000%2C%20500)%0A%0A%20%20%20%20%20%20%20%20spacex_alts%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20velocities%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20velocities_squared%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20qs%20%3D%20%5B%5D%0A%0A%20%20%20%20%20%20%20%20csv%20%3D%20open('data%2FMaxQ%2FSpaceX%20-%20JCSAT14%20Launch.csv'%2C%20'r')%0A%0A%20%20%20%20%20%20%20%20for%20line%20in%20csv.readlines()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20vals%20%3D%20line.split('%2C')%0A%20%20%20%20%20%20%20%20%20%20%20%20alt%20%3D%20float(vals%5B2%5D)%20%0A%20%20%20%20%20%20%20%20%20%20%20%20spacex_alts.append(alt)%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity%20%3D%20float(vals%5B1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20velocities.append(velocity)%0A%20%20%20%20%20%20%20%20%20%20%20%20velocities_squared.append(velocity*velocity)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20_%2C%20rho%2C%20_%2C%20_%20%3D%20ISA.state(alt*1000)%20%23%20km%20to%20m%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity_ms%20%3D%20(velocity%20*%201000)%20%2F%20(60%20*%2060)%0A%20%20%20%20%20%20%20%20%20%20%20%20dynamic_pressure%20%3D%200.5%20*%20rho%20*%20velocity_ms**2%0A%20%20%20%20%20%20%20%20%20%20%20%20qs.append(dynamic_pressure%20%2F%201000)%20%20%23%20kilo%20pascals%0A%0A%20%20%20%20%20%20%20%20fig%20%3D%20plt.figure(layout%3D'constrained'%2C%20figsize%3D(10%2C%205))%0A%20%20%20%20%20%20%20%20host%20%3D%20fig.add_subplot(111)%0A%0A%20%20%20%20%20%20%20%20par1%20%3D%20host.twinx()%0A%20%20%20%20%20%20%20%20par2%20%3D%20host.twinx()%0A%0A%20%20%20%20%20%20%20%20host.set_ylim(-0.05%2C%201.5)%0A%20%20%20%20%20%20%20%20par1.set_ylim(0%2C%2070000000)%0A%20%20%20%20%20%20%20%20par2.set_ylim(0%2C%2032)%0A%0A%20%20%20%20%20%20%20%20host.set_xlabel('Altitude%20(km)')%0A%20%20%20%20%20%20%20%20host.set_ylabel('Density')%0A%20%20%20%20%20%20%20%20par1.set_ylabel('Velocity%20Squared')%0A%20%20%20%20%20%20%20%20par2.set_ylabel('Dynamic%20Pressure')%0A%0A%20%20%20%20%20%20%20%20p1%2C%20%3D%20host.plot(alts%2C%20rhos%2C%20label%3D'Density%20%24%5Cmathrm%7B(kg%2Fm%5E3)%7D%24')%0A%20%20%20%20%20%20%20%20p2%2C%20%3D%20par1.plot(spacex_alts%2C%20velocities_squared%2C%20color%3D'r'%2C%20label%3D'Velocity%20Squared%20(km%2Fh)')%0A%20%20%20%20%20%20%20%20p3%2C%20%3D%20par2.plot(spacex_alts%2C%20qs%2C%20color%3D'g'%2C%20label%3D'Dynamic%20Pressure%20(kPa)')%0A%0A%20%20%20%20%20%20%20%20lns%20%3D%20%5Bp1%2C%20p2%2C%20p3%5D%0A%20%20%20%20%20%20%20%20host.legend(handles%3Dlns%2C%20loc%3D'upper%20center')%0A%0A%20%20%20%20%20%20%20%20par2.spines%5B'right'%5D.set_position(('outward'%2C%2060))%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20host.yaxis.label.set_color(p1.get_color())%0A%20%20%20%20%20%20%20%20par1.yaxis.label.set_color(p2.get_color())%0A%20%20%20%20%20%20%20%20par2.yaxis.label.set_color(p3.get_color())%0A%0A%20%20%20%20%20%20%20%20plt.title('SpaceX%20-%20JCSAT14%20-%20Standard%20Atmosphere')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_spacex_jcsat14%2C)%0A%0A%0A%40app.cell%0Adef%20_(ISA%2C%20mo%2C%20plt%2C%20std_atmosphere_densities)%3A%0A%20%20%20%20def%20plot_nasa_sts124()%3A%0A%20%20%20%20%20%20%20%20(alts%2C%20rhos)%20%3D%20std_atmosphere_densities(0%2C%2066000%2C%20500)%0A%0A%20%20%20%20%20%20%20%20nasa_alts%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20nasa_throttles%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20velocities%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20velocities_squared%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20qs%20%3D%20%5B%5D%0A%0A%20%20%20%20%20%20%20%20csv%20%3D%20open('data%2FMaxQ%2FNASA%20Shuttle%20-%20STS124%20Launch.csv'%2C%20'r')%0A%0A%20%20%20%20%20%20%20%20for%20line%20in%20csv.readlines()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20vals%20%3D%20line.split('%2C')%0A%20%20%20%20%20%20%20%20%20%20%20%20throttle%20%3D%20float(vals%5B1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20alt%20%3D%20float(vals%5B2%5D)%20%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity%20%3D%20float(vals%5B3%5D)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20nasa_alts.append(alt)%0A%20%20%20%20%20%20%20%20%20%20%20%20nasa_throttles.append(throttle)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20velocities.append(velocity)%0A%20%20%20%20%20%20%20%20%20%20%20%20velocities_squared.append(velocity*velocity)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20_%2C%20rho%2C%20_%2C%20_%20%3D%20ISA.state(alt*1000)%20%23%20km%20to%20m%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity_ms%20%3D%20(velocity%20*%201000)%20%2F%20(60%20*%2060)%0A%20%20%20%20%20%20%20%20%20%20%20%20dynamic_pressure%20%3D%200.5%20*%20rho%20*%20velocity_ms**2%0A%20%20%20%20%20%20%20%20%20%20%20%20qs.append(dynamic_pressure%20%2F%201000)%20%20%23%20kilo%20pascals%0A%0A%20%20%20%20%20%20%20%20fig%20%3D%20plt.figure(layout%3D'constrained'%2C%20figsize%3D(10%2C%205))%0A%20%20%20%20%20%20%20%20host%20%3D%20fig.add_subplot(111)%0A%0A%20%20%20%20%20%20%20%20par1%20%3D%20host.twinx()%0A%20%20%20%20%20%20%20%20par2%20%3D%20host.twinx()%0A%20%20%20%20%20%20%20%20par3%20%3D%20host.twinx()%0A%0A%20%20%20%20%20%20%20%20host.set_ylim(-0.05%2C%201.5)%0A%20%20%20%20%20%20%20%20par1.set_ylim(0%2C%2030000000)%0A%20%20%20%20%20%20%20%20par2.set_ylim(0%2C%2040)%0A%20%20%20%20%20%20%20%20par3.set_ylim(0%2C%20110)%0A%0A%20%20%20%20%20%20%20%20host.set_xlabel('Altitude%20(km)')%0A%20%20%20%20%20%20%20%20host.set_ylabel('Density')%0A%20%20%20%20%20%20%20%20par1.set_ylabel('Velocity%20Squared')%0A%20%20%20%20%20%20%20%20par2.set_ylabel('Dynamic%20Pressure')%0A%20%20%20%20%20%20%20%20par3.set_ylabel('Throttle')%0A%0A%20%20%20%20%20%20%20%20p1%2C%20%3D%20host.plot(alts%2C%20rhos%2C%20label%3D'Density%20%24%5Cmathrm%7B(kg%2Fm%5E3)%7D%24')%0A%20%20%20%20%20%20%20%20p2%2C%20%3D%20par1.plot(nasa_alts%2C%20velocities_squared%2C%20color%3D'r'%2C%20label%3D'Velocity%20Squared%20(km%2Fh)')%0A%20%20%20%20%20%20%20%20p3%2C%20%3D%20par2.plot(nasa_alts%2C%20qs%2C%20color%3D'g'%2C%20label%3D'Dynamic%20Pressure%20(kPa)')%0A%20%20%20%20%20%20%20%20p4%2C%20%3D%20par3.plot(nasa_alts%2C%20nasa_throttles%2C%20color%3D'black'%2C%20label%3D'Throttle%20(%25)')%0A%0A%20%20%20%20%20%20%20%20lns%20%3D%20%5Bp1%2C%20p2%2C%20p3%2C%20p4%5D%0A%20%20%20%20%20%20%20%20host.legend(handles%3Dlns%2C%20loc%3D'center%20right')%0A%0A%20%20%20%20%20%20%20%20par2.spines%5B'right'%5D.set_position(('outward'%2C%2060))%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%23%20Move%20throttle%20axis%20to%20the%20left%20side%20%20%20%20%0A%20%20%20%20%20%20%20%20par3.spines%5B'left'%5D.set_position(('outward'%2C%2060))%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20par3.spines%5B%22left%22%5D.set_visible(True)%0A%20%20%20%20%20%20%20%20par3.yaxis.set_label_position('left')%0A%20%20%20%20%20%20%20%20par3.yaxis.set_ticks_position('left')%0A%0A%20%20%20%20%20%20%20%20host.yaxis.label.set_color(p1.get_color())%0A%20%20%20%20%20%20%20%20par1.yaxis.label.set_color(p2.get_color())%0A%20%20%20%20%20%20%20%20par2.yaxis.label.set_color(p3.get_color())%0A%20%20%20%20%20%20%20%20par3.yaxis.label.set_color(p4.get_color())%0A%0A%20%20%20%20%20%20%20%20plt.title('NASA%20-%20STS124%20-%20Standard%20Atmosphere')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_nasa_sts124%2C)%0A%0A%0A%40app.cell%0Adef%20_(ISA%2C%20mo%2C%20plt%2C%20std_atmosphere_densities)%3A%0A%20%20%20%20def%20plot_airliner()%3A%0A%20%20%20%20%20%20%20%20(alts%2C%20rhos)%20%3D%20std_atmosphere_densities(0%2C%2010500%2C%20500)%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%23%20Convert%20from%20m%20to%20ft%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(0%2C%20len(alts))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20alts%5Bi%5D%20%3D%20alts%5Bi%5D%20*%203280.84%0A%0A%20%20%20%20%20%20%20%20airliner_alts%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20airliner_speeds%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20qs%20%3D%20%5B%5D%0A%0A%20%20%20%20%20%20%20%20csv%20%3D%20open('data%2FMaxQ%2FAirliner.csv'%2C%20'r')%0A%0A%20%20%20%20%20%20%20%20for%20line%20in%20csv.readlines()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20vals%20%3D%20line.split('%2C')%0A%20%20%20%20%20%20%20%20%20%20%20%20alt%20%3D%20float(vals%5B0%5D)%20%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity%20%3D%20float(vals%5B1%5D)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20airliner_alts.append(alt)%0A%20%20%20%20%20%20%20%20%20%20%20%20airliner_speeds.append(velocity)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20_%2C%20rho%2C%20_%2C%20_%20%3D%20ISA.state(alt*0.3048)%20%23%20ft%20to%20m%0A%20%20%20%20%20%20%20%20%20%20%20%20velocity_ms%20%3D%20velocity%20*%200.5144%20%20%23%20knots%20to%20m%2Fs%0A%20%20%20%20%20%20%20%20%20%20%20%20dynamic_pressure%20%3D%200.5%20*%20rho%20*%20velocity_ms**2%0A%20%20%20%20%20%20%20%20%20%20%20%20qs.append(dynamic_pressure%20%2F%201000)%20%20%23%20kilo%20pascals%0A%0A%20%20%20%20%20%20%20%20fig%20%3D%20plt.figure(layout%3D'constrained'%2C%20figsize%3D(10%2C%205))%0A%20%20%20%20%20%20%20%20host%20%3D%20fig.add_subplot(111)%0A%0A%20%20%20%20%20%20%20%20par1%20%3D%20host.twinx()%0A%20%20%20%20%20%20%20%20par2%20%3D%20host.twinx()%0A%0A%20%20%20%20%20%20%20%20host.set_ylim(-0.05%2C%201.5)%0A%20%20%20%20%20%20%20%20par1.set_ylim(0%2C%20700)%0A%20%20%20%20%20%20%20%20par2.set_ylim(0%2C%2030)%0A%0A%20%20%20%20%20%20%20%20host.set_xlabel('Altitude%20(ft)')%0A%20%20%20%20%20%20%20%20host.set_ylabel('Density')%0A%20%20%20%20%20%20%20%20par1.set_ylabel('Ground%20Speed')%0A%20%20%20%20%20%20%20%20par2.set_ylabel('Dynamic%20Pressure')%0A%0A%20%20%20%20%20%20%20%20p1%2C%20%3D%20host.plot(alts%2C%20rhos%2C%20label%3D'Density%20%24%5Cmathrm%7B(kg%2Fm%5E3)%7D%24')%0A%20%20%20%20%20%20%20%20p2%2C%20%3D%20par1.plot(airliner_alts%2C%20airliner_speeds%2C%20color%3D'r'%2C%20label%3D'Ground%20Speed%20(kt)')%0A%20%20%20%20%20%20%20%20p3%2C%20%3D%20par2.plot(airliner_alts%2C%20qs%2C%20color%3D'g'%2C%20label%3D'Dynamic%20Pressure%20(kPa)')%0A%0A%20%20%20%20%20%20%20%20lns%20%3D%20%5Bp1%2C%20p2%2C%20p3%5D%0A%20%20%20%20%20%20%20%20host.legend(handles%3Dlns%2C%20loc%3D'center%20right')%0A%0A%20%20%20%20%20%20%20%20par2.spines%5B'right'%5D.set_position(('outward'%2C%2060))%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20host.yaxis.label.set_color(p1.get_color())%0A%20%20%20%20%20%20%20%20par1.yaxis.label.set_color(p2.get_color())%0A%20%20%20%20%20%20%20%20par2.yaxis.label.set_color(p3.get_color())%0A%0A%20%20%20%20%20%20%20%20plt.title('Airliner%20-%20Standard%20Atmosphere')%0A%0A%20%20%20%20%20%20%20%20return%20mo.md(f%22%7Bmo.as_html(fig)%7D%22)%0A%20%20%20%20return%20(plot_airliner%2C)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
2d5e351ecbe8ca3b9404092b35f4b1a28b0b52050d6748e1955a6d6b723f50a9