Making the analysis of data easier by including everything in a single dataframe. What remains is to clean up the remaining functions in the OFRAnalyser definition.
This commit is contained in:
1 parent
09a245bc2f
commit
76b0129b6f
2 files changed
+100
-113
No files matched your search
+48
-45
@@ -141,7 +141,7 @@ class OFRSample:
|
||||
self.SOA_density = float(line.split(self.__data_separator)[1])
|
||||
continue
|
||||
|
||||
self.sample_time = self.scan_up_time + self.scan_down_time
|
||||
self.sampling_time = self.scan_up_time + self.scan_down_time
|
||||
data_lines.pop(-1)
|
||||
|
||||
for line in data_lines:
|
||||
@@ -169,7 +169,7 @@ class OFRSample:
|
||||
|
||||
self.scan_up_time = None # Time to scan up the voltage range in DMA, in (s)
|
||||
self.scan_down_time = None # Time to scan down the voltage range in DMA, in(s)
|
||||
self.sample_time = None # Total time to scan voltage up and back down in DMA, in (s)
|
||||
self.sampling_time = None # Total time to scan voltage up and back down in DMA, in (s)
|
||||
|
||||
self.lower_diameter_bound = None # Lower Diameter bound of CPC, in (nm)
|
||||
self.upper_diameter_bound = None # Upper Diameter bound of CPC, in (nm)
|
||||
@@ -238,10 +238,10 @@ class OFRAnalyser:
|
||||
stopping_times = []
|
||||
sampling_times = []
|
||||
dry_air_flows = []
|
||||
ozone_flows = []
|
||||
species_flows = []
|
||||
total_flows = []
|
||||
cnc_flows = []
|
||||
ozone_flows = []
|
||||
total_flows = None
|
||||
cpc_flows = []
|
||||
|
||||
for sample_number in self.sample_number_list:
|
||||
sample = OFRSample(source_file=self.data_source_file, sample_number = sample_number, data_separator = self.__data_separator)
|
||||
@@ -256,63 +256,66 @@ class OFRAnalyser:
|
||||
|
||||
if sample_number == 1:
|
||||
starting_times.append(0.00)
|
||||
stopping_times.append(sample.sample_time)
|
||||
stopping_times.append(sample.sampling_time)
|
||||
|
||||
starting_times.append(stopping_times[-1])
|
||||
stopping_times.append(stopping_times[-1] + sample.sample_time)
|
||||
elif sample_number >= 1:
|
||||
starting_times.append(stopping_times[-1])
|
||||
stopping_times.append(stopping_times[-1] + sample.sampling_time)
|
||||
|
||||
local_dry_air_flows = []
|
||||
local_ozone_flows = []
|
||||
local_species_flows = []
|
||||
local_cpc_flows = []
|
||||
sampling_times.append(sample.sampling_time)
|
||||
|
||||
out_flag = False
|
||||
|
||||
with open(self.flow_source_file, 'r', errors='ignore') as file:
|
||||
with open(self.flows_source_file, 'r', errors='ignore') as file:
|
||||
for line_counter, line in enumerate(file.readlines()):
|
||||
|
||||
if out_flag == True:
|
||||
continue
|
||||
|
||||
i = 0
|
||||
if line_counter >= 6:
|
||||
|
||||
if line_counter == 6:
|
||||
if line.startswith('-'):
|
||||
out_flag = True
|
||||
continue
|
||||
|
||||
i = 0
|
||||
items = line.split()
|
||||
|
||||
while i <= items:
|
||||
pass
|
||||
while i < int(items[-1]):
|
||||
|
||||
dry_air_flows.append(float(items[0]))
|
||||
species_flows.append(float(items[1]))
|
||||
ozone_flows.append(float(items[2]))
|
||||
cpc_flows.append(float(items[3]))
|
||||
|
||||
i += 1
|
||||
|
||||
dry_air_flows.append(float(items[0]))
|
||||
species_flows.append(float(items[1]))
|
||||
ozone_flows.append(float(items[2]))
|
||||
cnc_flows.append(float(items[-1]))
|
||||
starts.append(0)
|
||||
stops.append(float(items[3]) * float(items[4]))
|
||||
smpls.append(float(items[4]))
|
||||
i += 1
|
||||
elif line_counter > 6 and not line.startswith('-'):
|
||||
items = line.split()
|
||||
dry_air_flows.append(float(items[0]))
|
||||
species_flows.append(float(items[1]))
|
||||
ozone_flows.append(float(items[2]))
|
||||
cnc_flows.append(float(items[-1]))
|
||||
starts.append(stops[i-1])
|
||||
stops.append(stops[i-1] + float(items[3]) * float(items[4]))
|
||||
smpls.append(float(items[4]))
|
||||
i += 1
|
||||
if line_counter > 6 and line.startswith('-'):
|
||||
out_flag = True
|
||||
else:
|
||||
continue
|
||||
|
||||
self.data = pd.DataFrame({'Sample': self.sample_number_list,
|
||||
'Number (#/cm^3)': numbers,
|
||||
'Length (mm/cm^3)': lengths,
|
||||
'Surface (mm^2/cm^3)': surfaces,
|
||||
'Volume (μm^3/cm^3)': volumes,
|
||||
'Density (pg/μm^3)': densities,
|
||||
'Mass (mg/cm^3)': masses,
|
||||
'Time (s)': times})
|
||||
total_flows = [(flow_1 + flow_2 + flow_3) * 1E3 for flow_1, flow_2, flow_3 in zip(dry_air_flows, species_flows, ozone_flows)]
|
||||
mass_production_rate = [(mass * flow) for mass, flow in zip(mass_concentrations, total_flows)]
|
||||
mass_produced = [(mpr * duration) for mpr, duration in zip(mass_production_rate, sampling_times)]
|
||||
cumulative_mass_produced = np.cumsum(np.array(mass_produced)).tolist()
|
||||
|
||||
self.data = pd.DataFrame({'Sample (-)': numbers_of_sample,
|
||||
'Number (#/cm^3)': number_concentrations,
|
||||
'Length (mm/cm^3)': length_concentrations,
|
||||
'Surface (mm^2/cm^3)': surface_concentrations,
|
||||
'Volume (μm^3/cm^3)': volume_concentrations,
|
||||
'Density (pg/μm^3)': aerosol_densities,
|
||||
'Mass (mg/cm^3)': mass_concentrations,
|
||||
'Start (s)': starting_times,
|
||||
'Stop (s)': stopping_times,
|
||||
'Duration (s)': sampling_times,
|
||||
'Dry Air Flow (L/min)': dry_air_flows,
|
||||
'Species Flow (L/min)': species_flows,
|
||||
'Ozone Flow (L/min)': ozone_flows,
|
||||
'Total Flow (cm^3/s)': total_flows,
|
||||
'CPC Flow (L/min)': cpc_flows,
|
||||
'Mass Production Rate (mg/s)': mass_production_rate,
|
||||
'Mass Produced (mg)': mass_produced,
|
||||
'Cumulative Mass Produced (mg)': cumulative_mass_produced})
|
||||
|
||||
def GetPlottableData(self, which_data = 'Mass'):
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": null,
|
||||
"id": "8769766b",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
@@ -26,8 +26,8 @@
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# Specify the source file for this analysis\n",
|
||||
"source_file = Path(r\"Z:\\People\\David_Tschan\\data\\OFR_SMPS\\2026\\processed\\06_June\\20260612\\20260612_SET02_EXP01_full.txt\")\n",
|
||||
"flow_source_file = Path(r\"Z:\\People\\David_Tschan\\data\\OFR_SMPS\\2026\\processed\\06_June\\20260612\\20260612_SET02_EXP01_full_flows.txt\")"
|
||||
"source_file = Path(r\"C:\\Users\\tschan_d\\Documents\\data_local\\20260612_SET02_EXP01_full.txt\")\n",
|
||||
"flows_source_file = Path(r\"C:\\Users\\tschan_d\\Documents\\data_local\\20260612_SET02_EXP01_full_flows.txt\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -40,21 +40,10 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": null,
|
||||
"id": "76a9b026",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAJjCAYAAABA7UFUAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAzKdJREFUeJzs3QeYVNX5x/EfRbHR7YoFLNHEQjOaGAvVllgAscVEpYiJ0b8KiDESUkQQTaKJUjQmGo0UsUeRpomxAmIJmiBYWLtUsaAC/+d3j5dd1m0zOzN3yvfzPNe57M7OnD2z7s57z3vet8H69evXCwAAAAAAFIyGSQ8AAAAAAACkhmAeAAAAAIACQzAPAAAAAECBIZgHAAAAAKDAEMwDAAAAAFBgCOYBAAAAACgwBPMAAAAAABQYgnkAAAAAAAoMwTwAVGP06NFq0KAB8wMAAIC8U/TB/Lx58zRw4EC1a9cuelPesmVL9enTR4sXL672a4YOHRrd3/ft3r179Bj1fVx/3J+P7+9bBwqpqMu46vt8K1asiJ6nY8eO0df5mDJlSsbmtuLX+nvw18Rf63+PHz9+o/v5ueNxVHXMmDGjxs9XPCqOKxuvccz3i7+Puozf/LiVx1hxrP5cPMaqHtNj9P38+lX19bV9r6m87qmq62tdCiq+dlW9Vp5/H5nk+a/4u8Dz7+eIf/bSvS8AAACS1VhFzgHKnDlzdPLJJ0dvShctWhQFEX6z6vO2bdtudH+/kfUb7iFDhkT3GTduXPR106dPV7du3dJ6XL8RdvDij/Xu3XvDfXzUVV3HVd/nW7ZsWfR9dOrUKframgK6VOe2qvENGzYsunUQ++yzz2rUqFEaMGDA174m/r4r8zg9FxX5Mfx9+LaiVq1aZe01rvi9OUjz19R1/DZhwoToaz22uXPnbhRc+SKM56RDhw5fe8zOnTtH36vH7vv5MSp+fV2/11Re91Sk81qXiv79+2vy5MlZfx7Pt38m498FPp84cWL0uvjnoeJrkMp9AQAAkLD1RW7u3Llf+9iiRYvW+1vv3bv31+7rj48bN26jj7dt23Z9hw4d0n7cFi1arO/WrVu9voe6jisTzxebPn169LyTJ0+udlx1nYOKPDaPsS783H48j6WuPCeem+rGnI3XODZgwICNHieV8cfzPWrUqI3GVfl7qe4x/dz+eDzuVH9u6vq6pyKV1zof+bXI5K/J+LXzvPjWP08V+XWp6bXJpNp+DtK9LwAAAHKj6NPsK69mmlcHW7Ro8bWU5niFt/Lqk1epvEJa8f51fVyvlnp1q/LqcSpSGVcmni8bc1uRPxevkudaNl7jyivRffv2TWtsXin3uJwR4MePb+u6euvVU3M2Qarfa6o8trqs3qfyWvu+ddnW4AwCZxf459yf9/38NXHafrzFpPLHa/t6f0915a+tOFY/XirZDH4u/xz5MWpS1VgzlYbv568q1b++9wUAAEBuFH0wX5U4lTROcY45CKoqddqpzPHXpfq4TieO3wg72Kq4v7muUhlXJp4vG3NbkYPkisFqLmXjNa74OR+Vtz2kwgG4Xz+/dr4w4/T4qi4qVDc2i7+/+n6vNfHYnH5dm1Re6/jzTr/3NgBvPfDH4mA25nNfjOjatWv0/fl+fh4HxnHw6+/RH/fn/fGKdQLir/f9/HlfLPEFDn9PDphr46/ffffdows3/r48Vv88+GvrWgfAFzi87cCPUVPti4rfq7/G35O/rj78mB6nH7e23wup3BcAAAA5tr4EOV3Uqb/Lly+vUyppdenKdXnc+GP++iFDhkRptnE6dE2p6OmOKxPPV5906+rmtiJ/Lk4z9hFvC6hqfuO05OqOVNPss/EaV0zJrpxSns74PQZ/rrrvoao0e5/7uSuOLd3vtS6vu7/XumwdSOW1ro6/puLWgzj1vartA1VtP/DX+/+Byl9f8TErznvF7RVVpdn7sar6GfD/b7X9So1fu/g5/DgVX6PKafbVjTUd/v+/4s9eTa9fKvcFAABAMoq+AF5l8SqdV9O8ApqLx/XqllcbvcpqXgX0fbwS6K+JV14rV4xOd4W3Ls+XqedKZ279Od/Hq65OTXY2gcfjwyvTFQu41VZALpdq+/68Ul258F0644/T4z0/FX8+qkurj3lMXmXO5M91deKfrdqk+lr7Z9Qfd0G+iqvx/rrKKs91nAVQ+Wc5LrpXWeXtB348v8YeW03ZEJMmTYqew2P0UTnjoabXrDL/fxo/Z03/D2ai8JxX9L0FxGP2HPvnJ85KqM99AQAAkIySCubjNFy/Ka3qjXN1+0Irpy+n8rj+Gr+5r/wm2G+UHbg4FToOQioHZ3HF9FTGVZfni9O4q3qubM1tVfx8FYPC+DF8VA5ePN5MXHDIxmtcMR26cgX9VMcfX3Dx8zit2anb1XUhiKvZx+OuHECm+71mQ11ea3+//v49h/5enFbu76G6PeKVL1r4/lV9T9Xt2a/89fG/a+v64Dn1hYnq9shXDPBr4+89Duhret5MXKDxnMY/I35e/0z652v9+vX1ui8AAACSUTJ75uP9rDWtLnnfa1UreDUFP7U9bl0DJt/Pb5QrHvHXpjKuujxfTc+Vrbmti3hPbiot+1KVjdc4Xq21+lxwiPeWO3jy83hFNP5YVRxg+X4+qloJTud7zZWqXus4sHfQ73n09+QxZqvwWuXHjf9dlwwKj7Py/0PxkerPQPw6Z6odYF3FF/TqUjshlfsCAAAgN0oimI97bdcWbMaVpSsXsfKb7TiwSPVx48es/EY9Lh5WU6G4dMaViefLxtxWVF1AEBcCy2Y6fTZeY8tECrKfyyuwcZp9XN0+Xq3P9veaDam81lUF7XUtKJeOyo9d1wsy/rzvm6mLDPGFC1/gyGXFeG9/sLr8HKRyXwAAAORG0afZO6BxMBYHWpWD3IoBmN9Q+9/+Gr+p9hvXeNUsfjOb6uP6MeJ2Y0uXLo3Sor3/1wFadSuqlaUyrkw8X/y9xPuUKz5HxflKZW6rWuXz5x3MOQ3az+HgKh5/Zf58VYFOqkFpNl5j857nmlrI1TZ+v17xfvyKPDY/dk3p9pn4XlN53c1dEvyx2trmpfJa+z7+eLwNxPfzmLJVA8Bz4f9H/Fxxtfa6/D/i79nV7J3+76+Jswc8r75oVlXNh9q4Sn28naAu/4/G1fgr1saojr8/z6F/F8RbLzxOP0blFpap3BcAAAAJW1/kXBm6ukri1VULd1Vqfy6uvF2xunW6j+tq1PHX+PPpVKeuy7gy8Xx1rb6eztzGFb1dLTuuPh7f399f5QrhtVWDr6oqek3V7LPxGsdjrO57rW38cXX5ihXXq6ou7zFXfMy6Vhiv689NKlX369odIZXX2v/2feOq/D5ftGhRdBt/79VVmDfPX1Wvu79nH5W/vuLzxWOqrLrnqjivcZV+/7zU9v9Z5Wr2lcfpz1VVzb6y+GemLv9f+2fMjx13uYh/Dqr6+UnlvgAAAEhWA/8n6QsKQCHzqrlXMKta7Ub+cZaKV9T51QcAAIBCVvRp9kC2OXU83p8OAAAAALlAMA/UE3uJAQAAAORaSVSzBwAAAACgmLBnHgAAAACAAsPKPAAAAAAABYZgHgAAAACAAkMwX08zZsxQ9+7do2P8+PGZeVUAAAAAAKgBe+brqWPHjpo7d259HwYAAAAAgDpjZV7S6NGj1a5dOzVo0KDK1fUVK1aoT58+atmyZRS8z5s3b8OqfNu2baMe40OHDo3uBwAAAABAthHMS1FA7l7hHTp0qHKS+vfvr1atWmn58uUaNmyYunbtGn188eLFUUDvYN4XAxzwAwAAAACQbaTZV+B97w7IBwwYsPEkNWgQBfItWrSI/u3A3cG/+Xby5MnRuVfufT8AAAAAALKp6FfmnTbvlfPKBevqyqvvFgfy5hV8f7xTp04bUu79b6/eAwAAAACQbY1V5LzK7uDdAb1vvbd9+vTpdf5674OvGMjHFi1aFH3cj+d99Bav1gMAAAAAkE1FH8ybg3cH3F6ldxDuPfJ15YC9qsJ2TrWPLxZUTssHAAAAACCbij7NPk6td0DerVs3jRo1KqWvjQP/igG9U+tTuSAAAAAAAEAmFX0wH1eb9+q8D+9tr7iHvi569+4dpdPHj7ds2bLowgAAAAAAACUZzNfW472iuNe77+u0+bg4XU28gu4gPl5J93nlFnIO1P24ceDv87iwnU2YMCF6Ln/c9505c2ba3y8AAAAAIH+MriUmdWzo+NPxoO9XW9xaMsF8bT3eY05z79y5s1577bWo/ZtXxutSld6PXzklvvKqulPv/Zjr16+PDp9XHI/3zfsigD8+d+7cWscKAAAAACgMbWuJSb0Y7BjS8aDv5wXguiwsl0yf+ep6vNcU3PvKSJ4MHwAAAABQwLpXE5N6xb5iIXXHoc7WTnqRt2Cr2TslvrYidF9++aWefvrpaGW9YcOakxCaNGmiTTfdNMOjBAAAAABk2+eff641a9bUeJ9169ZFq+sHH3ywGjdunFINNWdz+3AcakkH8gUbzHtVvn///tFe9po899xzOvTQQ3M2LgAAAABAfnvmmWeiLdx15bgz3jNv3nqdDwoymO/atWuU+uArJDXZbrvtottZs2Zp++23r/G+rMzX34gRIzR8+HCVsmKZg0L5PvJlnEmNI5fPm83n+uijj7TvvvtqwYIFatq0aVaeA8jH3x2lgvkunjkohO8jn8bI+4Pcvjf4vA4r8++++666dOmyIU6sKwfyLoTuGDQuhlcx7T4pjQtxH0OnTp3q1C8+Tq3fc889tfPOO+dgdKXN/6OV+jwXyxwUyveRL+NMahy5fN5sPteqVaui25122knNmjXLynMA+fi7o1Qw38UzB4XwfeTTGHl/kH/vDZp+dWGgti3YFbnQnY94H73T610Mb8qUKRoyZIhKupp9bSqW/Y9byrmCIAAAAAAA2RSvvsdxqQN775vPhz3ziQfzNfV4960/H0+ar374fr5PfORDSwALine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x600 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# First load and get the data of sample 33 (arbitrary) and create a sample object\n",
|
||||
"sample_number = 33\n",
|
||||
@@ -96,16 +85,17 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": null,
|
||||
"id": "8db19b57",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sample_number_list = [int(i) for i in range(1, 157)]\n",
|
||||
"\n",
|
||||
"analyser = OFRAnalyser(data_source_file = source_file, sample_number_list=sample_number_list)\n",
|
||||
"analyser = OFRAnalyser(data_source_file = source_file, flows_source_file = flows_source_file, sample_number_list = sample_number_list)\n",
|
||||
"analyser.GetData()\n",
|
||||
"analyser.GetFlowData(flow_source_file = flow_source_file)"
|
||||
"\n",
|
||||
"analyser.data.to_csv(path_or_buf=r\"C:\\Users\\tschan_d\\Documents\\data_local\\data.csv\", index=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -118,40 +108,26 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": null,
|
||||
"id": "a4477003",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x400 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fig = plt.figure(figsize=(10,4), constrained_layout = True)\n",
|
||||
"ax = fig.add_subplot(111)\n",
|
||||
"ax_2 = plt.twinx(ax)\n",
|
||||
"\n",
|
||||
"times, numbers = analyser.GetPlottableData(which_data='Number')\n",
|
||||
"_, masses = analyser.GetPlottableData(which_data='Mass')\n",
|
||||
"\n",
|
||||
"ax.plot(times, numbers, color='red', label='Number')\n",
|
||||
"ax_2.plot(times, masses, color='blue', label='Mass')\n",
|
||||
"ax.plot(analyser.data['Sample (-)'], analyser.data['Number (#/cm^3)'], color='red', label='Number')\n",
|
||||
"ax_2.plot(analyser.data['Sample (-)'], analyser.data['Mass (mg/cm^3)'], color='blue', label='Mass')\n",
|
||||
"\n",
|
||||
"ax.set_title('2026-06-12 SET02/EXP01: Experiment Overview')\n",
|
||||
"ax.set_xlabel(r'Time $t$ $(\\unit{\\second})$')\n",
|
||||
"ax.set_xlabel(r'Sample $(-)$')\n",
|
||||
"ax.set_ylabel(r'Number Density $N$ $(\\unit{\\per\\cubic\\centi\\meter})$')\n",
|
||||
"ax_2.set_ylabel(r'Mass Density $m$ $(\\unit{\\milli\\gram\\per\\cubic\\centi\\meter})$')\n",
|
||||
"ax.xaxis.set_minor_locator(MultipleLocator(base=180, offset=0))\n",
|
||||
"ax.xaxis.set_major_locator(MultipleLocator(base=1800, offset=0))\n",
|
||||
"ax.xaxis.set_minor_locator(MultipleLocator(base=1, offset=0))\n",
|
||||
"ax.xaxis.set_major_locator(MultipleLocator(base=10, offset=0))\n",
|
||||
"\n",
|
||||
"ax.set_xlim([0, 30000])\n",
|
||||
"ax.set_xlim([1, 156])\n",
|
||||
"ax.set_ylim([0, 1.2E6])\n",
|
||||
"ax_2.set_ylim([0, 15])\n",
|
||||
"\n",
|
||||
@@ -173,43 +149,26 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": null,
|
||||
"id": "a5af245c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x250 with 2 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Plotting the relevant data:\n",
|
||||
"# Note that the dry air flow is not plotted because it is constant at 5 L/min.\n",
|
||||
"\n",
|
||||
"times, ozones = analyser.GetPlottableFlowData(which_flow_rate='Ozone')\n",
|
||||
"_, species = analyser.GetPlottableFlowData(which_flow_rate='Species')\n",
|
||||
"\n",
|
||||
"fig = plt.figure(figsize=(10,2.5), constrained_layout = True)\n",
|
||||
"ax = fig.add_subplot(111)\n",
|
||||
"ax_2 = plt.twinx(ax)\n",
|
||||
"ax_2 = plt.twinx(ax=ax)\n",
|
||||
"\n",
|
||||
"ax.plot(times, ozones, color='red', linestyle='--', label='Ozone')\n",
|
||||
"ax_2.plot(times, species, color='blue', linestyle='--', label=r'$\\alpha$-Pinene')\n",
|
||||
"ax.step(analyser.data['Sample (-)'], analyser.data['Ozone Flow (L/min)'], color='forestgreen', linestyle='--', label='Ozone')\n",
|
||||
"ax_2.step(analyser.data['Sample (-)'], analyser.data['Species Flow (L/min)'], color='magenta', linestyle='--', label=r'$\\alpha$-Pinene')\n",
|
||||
"\n",
|
||||
"ax.set_title('2026-06-12 SET02/EXP01: Flow Rates Overview ')\n",
|
||||
"ax.set_xlabel(r'Time $t$ $(\\unit{\\second})$')\n",
|
||||
"ax.set_xlabel(r'Sample $(-)$')\n",
|
||||
"ax.set_ylabel(r'Ozone Flow Rate $r_{\\ce{O3}}$ $(\\unit{\\liter\\per\\minute})$')\n",
|
||||
"ax_2.set_ylabel(r'$\\alpha$-Pinene Flow Rate $r_{\\alpha}$ $(\\unit{\\liter\\per\\minute})$')\n",
|
||||
"ax.xaxis.set_minor_locator(MultipleLocator(base=180, offset=0))\n",
|
||||
"ax.xaxis.set_major_locator(MultipleLocator(base=1800, offset=0))\n",
|
||||
"ax.xaxis.set_minor_locator(MultipleLocator(base=1, offset=0))\n",
|
||||
"ax.xaxis.set_major_locator(MultipleLocator(base=10, offset=0))\n",
|
||||
"\n",
|
||||
"ax.set_xlim([0, 30000])\n",
|
||||
"ax.set_xlim([1, 156])\n",
|
||||
"ax.set_ylim([0.6, 2.4])\n",
|
||||
"ax_2.set_ylim([0.0, 0.05])\n",
|
||||
"\n",
|
||||
@@ -235,7 +194,32 @@
|
||||
"id": "e2ae6dbb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
"source": [
|
||||
"fig = plt.figure(figsize=(10,2.5), constrained_layout = True)\n",
|
||||
"ax = fig.add_subplot(111)\n",
|
||||
"ax_2 = plt.twinx(ax=ax)\n",
|
||||
"\n",
|
||||
"ax.step(analyser.data['Sample (-)'], analyser.data['Mass (mg/cm^3)'], color='forestgreen', linestyle='--', label='Ozone')\n",
|
||||
"ax_2.step(analyser.data['Sample (-)'], analyser.data['Species Flow (L/min)'], color='magenta', linestyle='--', label=r'$\\alpha$-Pinene')\n",
|
||||
"\n",
|
||||
"ax.set_title('2026-06-12 SET02/EXP01: Flow Rates Overview ')\n",
|
||||
"ax.set_xlabel(r'Sample $(-)$')\n",
|
||||
"ax.set_ylabel(r'Ozone Flow Rate $r_{\\ce{O3}}$ $(\\unit{\\liter\\per\\minute})$')\n",
|
||||
"ax_2.set_ylabel(r'$\\alpha$-Pinene Flow Rate $r_{\\alpha}$ $(\\unit{\\liter\\per\\minute})$')\n",
|
||||
"ax.xaxis.set_minor_locator(MultipleLocator(base=1, offset=0))\n",
|
||||
"ax.xaxis.set_major_locator(MultipleLocator(base=10, offset=0))\n",
|
||||
"\n",
|
||||
"ax.set_xlim([1, 156])\n",
|
||||
"ax.set_ylim([0.6, 2.4])\n",
|
||||
"ax_2.set_ylim([0.0, 0.05])\n",
|
||||
"\n",
|
||||
"lines_1, labels_1 = ax.get_legend_handles_labels()\n",
|
||||
"lines_2, labels_2 = ax_2.get_legend_handles_labels()\n",
|
||||
"\n",
|
||||
"ax.legend(lines_1 + lines_2, labels_1 + labels_2, loc='upper left')\n",
|
||||
"\n",
|
||||
"plt.savefig(\"20260723_OFR_Analysis_01_Experiment_Overview_bottom.pdf\", format='pdf', dpi=400)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
Reference in new issue
Block a user