70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"id": "imports",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import pandas as pd\n",
|
||
|
|
"import matplotlib.pyplot as plt\n",
|
||
|
|
"import numpy as np\n",
|
||
|
|
"from pyprojroot import here"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"id": "load",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"data = pd.read_csv(here() / 'data/base/data.csv')"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"id": "plot",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"fig, ax = plt.subplots(figsize=(10, 6))\n",
|
||
|
|
"\n",
|
||
|
|
"# Color by detector type\n",
|
||
|
|
"colors = {'APD': 'steelblue', 'SNSPD': 'coral', 'PMT': 'green', 'SPAD': 'purple'}\n",
|
||
|
|
"for detector in data['Detector Type'].unique():\n",
|
||
|
|
" mask = data['Detector Type'] == detector\n",
|
||
|
|
" ax.scatter(data[mask]['Distance (m)'], data[mask]['Visibility (%)'],\n",
|
||
|
|
" label=detector, alpha=0.7, s=100, color=colors.get(detector, 'gray'),\n",
|
||
|
|
" edgecolors='black', linewidth=1)\n",
|
||
|
|
"\n",
|
||
|
|
"# Fit and plot trend line\n",
|
||
|
|
"z = np.polyfit(data['Distance (m)'], data['Visibility (%)'], 1)\n",
|
||
|
|
"p = np.poly1d(z)\n",
|
||
|
|
"x_trend = np.linspace(data['Distance (m)'].min(), data['Distance (m)'].max(), 100)\n",
|
||
|
|
"ax.plot(x_trend, p(x_trend), 'r--', linewidth=2, alpha=0.5, label=f'Trend (slope={z[0]:.2f})')\n",
|
||
|
|
"\n",
|
||
|
|
"ax.set_xlabel('Photon Pair Distance (m)', fontsize=12)\n",
|
||
|
|
"ax.set_ylabel('Visibility (%)', fontsize=12)\n",
|
||
|
|
"ax.set_title('Visibility vs. Photon Pair Distance', fontsize=14)\n",
|
||
|
|
"ax.legend(loc='best')\n",
|
||
|
|
"ax.grid(True, alpha=0.3)\n",
|
||
|
|
"\n",
|
||
|
|
"plt.tight_layout()\n",
|
||
|
|
"plt.savefig(here() / 'output/plots/visibility_distance.png', dpi=300, bbox_inches='tight')"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3",
|
||
|
|
"language": "python",
|
||
|
|
"name": "python3"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 5
|
||
|
|
}
|