Files
ZKFC_ACC/000补偿值计算/Die4补偿数据计算.ipynb

2599 lines
1.0 MiB
Plaintext
Raw Normal View History

2025-11-23 20:43:12 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "ad8424f1-4fd8-4f68-9557-f560d5a28e4b",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import sys\n",
"import os\n",
"sys.path.append('..')\n",
"from QX8800SP_DA import *\n",
"plt.rcParams['font.family'] = ['SimHei'] # 用来正常显示中文标签\n",
"plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号\n",
"pd.set_option('display.max_columns', None) #显示所有列,把行显示设置成最大\n",
"pd.set_option('display.max_rows', None) #显示所有行,把列显示设置成最大\n",
"#交互式绘图\n",
"%matplotlib widget"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ccb60f92-e657-4732-a679-6ca67bfcf201",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MCX (94, 7)\n",
"MCY (94, 7)\n",
"Angle14 (94, 7)\n",
"RunOut (94, 7)\n",
"M1X (94, 7)\n",
"M1Y (94, 7)\n",
"M2X (94, 7)\n",
"M2Y (94, 7)\n",
"M3X (94, 7)\n",
"M3Y (94, 7)\n",
"M4X (94, 7)\n",
"M4Y (94, 7)\n",
"Angle13 (94, 1)\n",
"Note (7, 2)\n"
]
}
],
"source": [
"#写入TotalData\n",
"DieType = 'Die4'\n",
"TotalData = pd.read_excel(f'../{DieType}AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
"die_nums = -1\n",
"for i in TotalData:\n",
" print(i,TotalData[i].shape)"
]
},
{
"cell_type": "markdown",
"id": "8f9078d7",
"metadata": {},
"source": [
"## 对位Mark"
]
},
{
"cell_type": "markdown",
"id": "31b36a67",
"metadata": {},
"source": [
"### 对位MarkX"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6de0e187",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>11.22.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>87.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.006871</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.270957</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.522509</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.169789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.006846</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.170153</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.132551</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.655060</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.812870</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die4\n",
"count 87.000000\n",
"mean 0.006871\n",
"std 0.270957\n",
"min -0.522509\n",
"25% -0.169789\n",
"50% 0.006846\n",
"75% 0.170153\n",
"max 1.132551\n",
"range 1.655060\n",
"3sigma 0.812870"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# AlignMarkX = TotalData['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,die_nums:]\n",
"AlignMarkX = TotalData['MCX'].reset_index().dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,die_nums:].sort_index(axis=1)\n",
"AXdescibe = describe_3s(AlignMarkX)\n",
"AXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5355743f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:6: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[0].annotate(round(AXdescibe.loc['mean'][i],3),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,AXdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,AXdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[1].annotate(round(AXdescibe.loc['3sigma'][i],3),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:20: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,AXdescibe.loc['3sigma'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\2188852286.py:21: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,AXdescibe.loc['3sigma'][i]),\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "29be58109f3b4818acde137a1b53eb4d",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1tklEQVR4nO3dd1QUVxsG8GcbVaQINkTFioBYMcTYa6xBxB41mkSNMRYiRqPGGGNL1GiMmhiJJcYWY/nsGnuNQQVFNGIB7CDiLlIWWOb7Y2V1ZYEdYEXZ53fOHtiZe9+5szM7vNyZuSMRBEEAEREREZkNaXE3gIiIiIheLSaARERERGaGCSARERGRmWECSERERGRmmAASERERmRkmgERERERmhgkgERERkZlhAkhERERkZpgAElGJ0L17dyxdujTX+UlJSQanq1QqUzWJiOi1xQSQiEqEqKgoPHjwwOC8R48ewc3NDT/99JPe9A8//BDdunV7Fc0jInqtMAEkMjNHjhyBRCKBRCJBqVKl0KRJE4SEhORZtrBUKhUqV66MVatWiao3Z84cLFq0CD/99JPutXz5coNlbW1tIZUaPqTt3LkTSqUS9erV05s+aNAgHDt2DBs3bjRY7+uvv4ZEIsHo0aN100aNGgWJRIKvv/5a1LrkRSKR4MiRI0UW72W7du2CRCLBsWPHdNN++uknyOVy3Lx502TLJaLXl7y4G0BExeOPP/5AmTJlsHr1anz00Ue4fft2jqSmUaNG+Pfffwu9rODgYNy+fVt0vYsXL8LKykqX2F25cgVJSUkYOHAgFAoF5PKch7CMjAxoNBpYWVnppq1YsQK1a9dG8+bNERkZiaysLMjlcpQrVw4DBgyAVCrF1atXAQBZWVmwsrJCtWrVdPXDw8P12vSm6dKlCxo0aIBFixahRYsWEAQBixcvRv/+/fXWk4jMBxNAIjPl6emJ+vXro2PHjkhLS8OsWbMwcuRIlC1bVlfGzs4OjRs3LtRyDh06hJUrV8La2lp03XXr1um9//zzz/Hw4UN06tQJR48ezVH+3LlzmD59Ovr06YMNGzYAAM6fP4+TJ09iwoQJAICBAwfi6tWrUCgUuno7d+7U/Z6VlYUOHTpg8+bNumkvJn1vYgIIAF9++SX69u2LmJgYREREICoqCtu2bSvuZhFRMWECSEQYPnw4tm7dir1792LQoEFFFjc5ORkfffQRvvjiC/z++++i64eEhKBChQro3LkzAG0yFxAQgLlz50KhUMDGxkZXtkWLFnj33XcRHBysd9r6m2++AaBNZgFtkihGkyZNEBoaitjYWAiCgKSkJPj6+opel+IWEBCAmjVrYsmSJQgLC0NAQADq1KlT3M0iomLCawCJSHdt3JUrV/Sm53UNYFhYGNq0aQNra2tUq1YNCxcuzFFm4sSJsLOzw1dffVWgdiUkJKBXr174559/kJSUhFOnTqFFixaoUKECIiIiUKpUKd1LKpXCwsICjo6OcHBwAKDtfdy+fbvuPQBkZmZixowZOHXqlN6yRo0ahcaNG+PJkyd6062trVGjRg1cvHgR4eHhqFatml7iCQA//PCDbnr9+vXx999/683/4IMP8MEHH+DevXsYMGAAnJ2dcePGDYPr/PDhQ1SvXh19+vRBVlZWgT43Q6RSKSZNmoRly5bh77//xpdffllksYnozcMEkIjg5OQEAEhMTDSqfEJCAtq2bQsnJyfs3bsXQUFBGD9+vN7NJMePH8evv/6K1atX651uFWPChAkIDg5G165dsXDhQjg7O6NevXo4d+4c2rdvj0uXLuVaNykpCUOGDEGfPn30bv6Qy+XYvHlzjptJzp49CysrK71kMVvdunURHh6Oixcvom7dunrz1q1bh6CgIIwcORL79+9Hs2bNEBgYmGPYmcePH6Np06a6G0icnZ1zLEelUqFTp06oXbs21q5dm+Omlri4OFy/fh0JCQm5rnde+vfvD2trazRr1gwNGzYsUAwiKhmYABKRrpdPEASjyi9evBgymQzr169Hy5YtMWrUKLz33ntYs2YNACA1NRUffvghvvzyS9SvX79Qbfv666/RpUsXfPXVV+jXrx8AwNfXF507d8bkyZNzrWdnZ4fAwEAsWrQox7yBAwdi69atSEtLAwCkp6fj4sWL8Pf3Nxirbt26uh5AHx8fvXmurq5Yu3Ytxo8fj2bNmuGjjz6CUqnM0Zu6Y8cOjB49GmvXrsWoUaNgb2+vN1+tVsPf3x8ajQZ//fWXwaR5woQJqFmzJr7//vtc1zsvly5dQnx8PMLCwvD48eMCxSCikoEJIBHpev6yewLzk51IWFhY6IaU2bJlC6KiogAAU6dOhZ2dXZGdZuzbty8A4Nq1a7ppwcHB2LFjB86fP59rvfnz56NcuXI5pg8YMABPnz7F/v37AWjv8lWr1ejUqZPBOHn1ALZs2RJlypTBJ598gnr16umuD0xJSdEr5+npibFjx+ba1tGjR+PKlSu4deuWyQannjFjBtq0aYPSpUsbTIyJyHwwASQi3alULy8vo+s0adIEFy5c0HtlJ1SbN2/G+fPnoVAodAliTEwMhgwZInpcQbVajaCgIHzwwQc4evQoVqxYAUB708eXX34JFxcXUfEAoEKFCmjQoAF2794NQHu6umLFirmuf926dfHff//h2rVrORLAL774AoGBgbCxscGXX36JmJgYgzF8fX1zHacQ0PbChoWFoU6dOpg6darBMqtWrYIgCJgzZ44xq6nn8uXL2LZtGyZOnIjRo0dj8eLFfAoKkRljAkhE+PXXX2FlZaW72zY/3t7eiI2NRZ06dVC/fn3Ur18f//33H37++WcAwO7du3MkhxUqVMD06dNx4cIFUW0bN24csrKysHTpUsydOxfjxo1DdHQ0AGDmzJlwc3MTFS9b+/btsWfPHgDam13at2+fa9nq1avDxsZGd0PIi5YvX46goCDMnz8fffr0KXBStXjxYpQrVw5z585FSEiI3tiD2e7fv4+rV68iPj5edPyZM2fC29sb7du3x/Dhw5GZmYklS5YUqK1E9OZjAkhkpiIjI3HgwAEMGjQIGzduxHfffWf0KeDPPvsMarUaffv2xcGDB7F+/XqMHDlS18OVPcbgiy8LCwtUrlzZ6GsCBUHAmDFjsG7dOvz111+wtrbGsGHDUKdOnTyf+ZuXjIwMZGZmAgA++eQTHD58GOnp6Th06BDatm2rV+7FO3ClUik8PT3h5eWVoxfP2dkZf//9N44dO4Zff/1VFyd7OcbKvuavVatW6NChA4KCgnKUmTRpEurUqYP58+eLin39+nVs2rQJn3/+OQDA3t4eH330EX744Yccp6qJyDwwASQyUwMGDIC/vz9u3ryJrVu34rPPPjO6rrOzMw4ePAilUomuXbti/Pjx+OijjzBv3rwia99XX32FkJAQ7NixQ3dqViqVYvPmzZg1a5au3I0bN3D8+HHExMToxvp7mUajgSAICAkJ0Z2WrlKlCqpXrw5LS0skJydj0KBButPVFhYWOR6RVrdu3RynfwFg9erVSEtLQ6dOnbBkyRLMmTMHzs7OOHHiRIHXfc6cOThy5Ai2b99e4BgvmjVrFsqWLau7iQYAxo4di8TERPzyyy9FsgwierNIBGNv+yMieoVSUlJw9erVfIcrGTp0KFauXAlvb29s27YN1atXz1HGz88PnTp1wogRI/Dw4UNYWFjkGk8QBKSlpaFOnTp6j5MjIipJmAAS0RstPj4egiDoPcLuZXXq1IG/vz9mz579CltGRPT6YgJIREREZGZ4DSARERGRmWECSERERGRmmAASERERmRkmgERERERmhgkgERERkZlhAkhERERkZpgAEhEREZkZJoBEREREZoYJIBEREZGZYQJIREREZGaYABIRERGZGSaARERERGaGCSARERGRmWECSERERGRmmAASERERmRkmgERERERmhgkgERERkZlhAkhERERkZpgAEhEREZkZJoBEREREZoYJIBFRMUlLS8P69euLuxlEZIaYABIRFVJwcDDs7e2RlJSkmxYYGIiaNWtCo9HkWu/HH3/EkydPAABVq1aFRCK
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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MABPnz7F/v37AWjv8lWr1ejUqZPBOHn1ALZs2RJlypTBJ598gnr16umuD0xJSdEr5+npibFjx+ba1tGjR+PKlSu4deuWyQannjFjBtq0aYPSpUsbTIyJyHwwASQi3alULy8vo+s0adIEFy5c0HtlJ1SbN2/G+fPnoVAodAliTEwMhgwZInpcQbVajaCgIHzwwQc4evQoVqxYAUB708eXX34JFxcXUfEAoEKFCmjQoAF2794NQHu6umLFirmuf926dfHff//h2rVrORLAL774AoGBgbCxscGXX36JmJgYgzF8fX1zHacQ0PbChoWFoU6dOpg6darBMqtWrYIgCJgzZ44xq6nn8uXL2LZtGyZOnIjRo0dj8eLFfAoKkRljAkhE+PXXX2FlZaW72zY/3t7eiI2NRZ06dVC/fn3Ur18f//33H37++WcAwO7du3MkhxUqVMD06dNx4cIFUW0bN24csrKysHTpUsydOxfjxo1DdHQ0AGDmzJlwc3MTFS9b+/btsWfPHgDam13at2+fa9nq1avDxsZGd0PIi5YvX46goCDMnz8fffr0KXBStXjxYpQrVw5z585FSEiI3tiD2e7fv4+rV68iPj5edPyZM2fC29sb7du3x/Dhw5GZmYklS5YUqK1E9OZjAkhkpiIjI3HgwAEMGjQIGzduxHfffWf0KeDPPvsMarUaffv2xcGDB7F+/XqMHDlS18OVPcbgiy8LCwtUrlzZ6GsCBUHAmDFjsG7dOvz111+wtrbGsGHDUKdOnTyf+ZuXjIwMZGZmAgA++eQTHD58GOnp6Th06BDatm2rV+7FO3ClUik8PT3h5eWVoxfP2dkZf//9N44dO4Zff/1VFyd7OcbKvuavVatW6NChA4KCgnKUmTRpEurUqYP58+eLin39+nVs2rQJn3/+OQDA3t4eH330EX744Yccp6qJyDwwASQyUwMGDIC/vz9u3ryJrVu34rPPPjO6rrOzMw4ePAilUomuXbti/Pjx+OijjzBv3rwia99XX32FkJAQ7NixQ3dqViqVYvPmzZg1a5au3I0bN3D8+HHExMToxvp7mUajgSAICAkJ0Z2WrlKlCqpXrw5LS0skJydj0KBButPVFhYWOR6RVrdu3RynfwFg9erVSEtLQ6dOnbBkyRLMmTMHzs7OOHHiRIHXfc6cOThy5Ai2b99e4BgvmjVrFsqWLau7iQYAxo4di8TERPzyyy9FsgwierNIBGNv+yMieoVSUlJw9erVfIcrGTp0KFauXAlvb29s27YN1atXz1HGz88PnTp1wogRI/Dw4UNYWFjkGk8QBKSlpaFOnTp6j5MjIipJmAAS0RstPj4egiDoPcLuZXXq1IG/vz9mz579CltGRPT6YgJIREREZGZ4DSARERGRmWECSERERGRmmAASERERmRkmgERERERmhgkgERERkZlhAkhERERkZpgAEhEREZkZJoBEREREZoYJIBEREZGZYQJIREREZGaYABIRERGZGSaARERERGaGCSARERGRmWECSERERGRmmAASERERmRkmgERERERmhgkgERERkZlhAkhERERkZpgAEhEREZkZJoBEREREZoYJIBFRMUlLS8P69euLuxlEZIaYABIRFVJwcDDs7e2RlJSkmxY
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(2,1,sharex=True)\n",
"ax[0].plot([i+1 for i in range(len(AlignMarkX.columns))],AXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='b')\n",
"AlignMarkX.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.05um$')\n",
"for i in range(len(AlignMarkX.columns)):\n",
" ax[0].annotate(round(AXdescibe.loc['mean'][i],3), \n",
" xy=(i+1,AXdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,AXdescibe.loc['mean'][i]),\n",
" fontsize=15,\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_X/Day')\n",
"# labels = ax[0].get_xticklabels()\n",
"# plt.setp(labels, rotation=90)\n",
"ax[1].plot([i+1 for i in range(len(AlignMarkX.columns))],AXdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"ax[1].axhline(0.5,c='green',ls='-.',label=r'3sigma_X:$<0.500um$')\n",
"for i in range(len(AlignMarkX.columns)):\n",
" ax[1].annotate(round(AXdescibe.loc['3sigma'][i],3), \n",
" xy=(i+1,AXdescibe.loc['3sigma'][i]),\n",
" xytext=(i+0.95,AXdescibe.loc['3sigma'][i]),\n",
" fontsize=15,\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_X/Day')\n",
"labels = ax[1].get_xticklabels()\n",
"plt.setp(labels, rotation=90)\n",
"# ax[2].plot([i for i in AlignMarkX.columns],AXdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AlignMarkX.columns)):\n",
"# ax[2].annotate(round(AXdescibe.loc['range'][i],3), \n",
"# xy=(i,AXdescibe.loc['range'][i]),\n",
"# xytext=(i,AXdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_X/Day')\n",
"plt.suptitle(f'{DieType} 对位MarkX')\n",
"fig.tight_layout()\n",
"plt.savefig(f'{DieType}/{DieType}对位MarkX.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "64f88c9a",
"metadata": {},
"source": [
"### 对位MarkY"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9e294f7b-3ea3-4a33-99b5-92e22bd1a827",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>11.22.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>87.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.005202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.246813</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.582960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.115504</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.029889</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.100777</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.956300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.539261</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.740439</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die4\n",
"count 87.000000\n",
"mean 0.005202\n",
"std 0.246813\n",
"min -0.582960\n",
"25% -0.115504\n",
"50% -0.029889\n",
"75% 0.100777\n",
"max 0.956300\n",
"range 1.539261\n",
"3sigma 0.740439"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# AlignMarkY = TotalData['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,die_nums:]\n",
"AlignMarkY = TotalData['MCY'].reset_index().dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,die_nums:].sort_index(axis=1)\n",
"AYdescibe = describe_3s(AlignMarkY)\n",
"AYdescibe"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "81162e4f-1ed2-4365-9e55-2a0177174f18",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:6: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[0].annotate(round(AYdescibe.loc['mean'][i],3),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,AYdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,AYdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[1].annotate(round(AYdescibe.loc['3sigma'][i],3),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:20: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,AYdescibe.loc['3sigma'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3640321897.py:21: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,AYdescibe.loc['3sigma'][i]),\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a8b33db70c5f49ad895f75cd908e9167",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABztUlEQVR4nO3deVhU1RsH8O/MMOzIIoKICCjmAuKKEbnhmgtGgrmlZmqZmgvumuVSaqWkaVqmP5fMLXMpl8xUFHNLDRTRRAPcFRAHFBhg5v7+GBkdmYEZYASZ7+d55pE595z3npl7ub6ce8+9IkEQBBARERGRyRCXdweIiIiI6MViAkhERERkYpgAEhEREZkYJoBEREREJoYJIBEREZGJYQJIREREZGKYABIRERGZGCaARERERCaGCSARVQo9e/bE8uXLdS7PzMzUWp6RkWGsLhERVVhMAImoUkhISMDdu3e1LktNTYWHhweWLVumUT506FCEhIS8iO4REVUoTACJTExUVBREIhFEIhFsbW3RsmVLrF69usi6pZWRkYFatWph7dq1BrVbsGABlixZgmXLlqlfK1eu1FrXxsYGYrH2Q9ru3bshk8nQuHFjjfJBgwbh6NGj2LJli9Z2s2bNgkgkwpgxY9Rlo0ePhkgkwqxZswz6LEURiUSIiooqs3jPGzVqFDw8PJCfn68uy8rKgpOTU5l+DiJ6eZiVdweIqHz89NNPqFq1KtatW4dhw4bhxo0bhZKB5s2b4++//y71uiZNmoQbN24Y3O78+fOwtLRUJ3aXLl1CZmYmBg4cCKlUCjOzwoewvLw8KBQKWFpaqstWrVqFevXqoXXr1oiPj4dSqYSZmRlcXV0xYMAAiMViXL58GQCgVCphaWmJ2rVrq9vHxsZq9OllM3HiRHz//ffYtm0b+vbtCwBYt24d5HI5Ro8eXc69I6LywASQyEQ1bNgQTZo0QZcuXZCTk4N58+Zh5MiRcHFxUdexs7NDixYtSrWeQ4cOYc2aNbCysjK47caNGzXeT5gwAffu3UPXrl1x5MiRQvXPnj2L2bNno0+fPti8eTMA4Ny5c/jrr78wefJkAMDAgQNx+fJlSKVSdbvdu3erf1YqlejcuTO2bdumLns26XsZE0Bvb2/07t0bixcvRt++fSEIAr755hsMGTIEzs7O5d09IioHTACJCB988AF27NiB33//HYMGDSqzuI8fP8awYcMwZcoU/Pjjjwa3X716Ndzc3NCtWzcAqmSuV69e+OKLLyCVSmFtba2u26ZNG7zxxhuYNGmSxmnrOXPmAFAls4AqSTREy5YtcebMGVy/fh2CICAzMxMBAQEGf5byNmXKFDRt2hQnTpxAeno6EhISsHfv3vLuFhGVE14DSETqa+MuXbqkUV7UNYAxMTFo3749rKysULt2bSxevLhQnalTp8LOzg6ffPJJifqVlpaG3r1749SpU8jMzMTx48fRpk0buLm5IS4uDra2tuqXWCyGubk5HB0d4eDgAEA1+rhr1y71ewDIz8/H3Llzcfz4cY11jR49Gi1atMDDhw81yq2srODj44Pz588jNjYWtWvX1kg8AeDrr79Wlzdp0gR//vmnxvJ3330X7777Lm7fvo0BAwbA2dkZ165d0/qZ7927hzp16qBPnz5QKpUl+t60adKkCTp37ozFixdj8eLF6N27N7y9vcssPhG9XDgCSERwcnICAKSnp+tVPy0tDR06dEBwcDB+//13XLhwAePGjYOdnR2GDh0KAIiOjsYPP/yAkydPapxuNcTkyZORlZWFHj16YMyYMXB2dkbjxo3x999/o1OnToiJiUGjRo20ts3MzMSQIUPQp08fjdnBZmZm2LZtG65du4agoCB1+enTp2FpaamRLBZo1KgRYmNjIQgCGjVqhAcPHqiXbdy4EREREfjqq68QGBiIzZs3Izw8HDdu3FCPOgLAgwcPEBQUhFatWmHWrFlaT71mZGSga9euqFevHjZs2FBoUsv9+/eRkZEBR0dHVK1aVe/vscCUKVPQqVMnCIJg8EgoEVUuHAEkIvUonyAIetVfunQpJBIJNm3ahLZt22L06NF48803sX79egBAdnY2hg4diunTp6NJkyal6tusWbPQvXt3fPLJJ+jXrx8AICAgAN26dcOMGTN0trOzs0N4eDiWLFlSaNnAgQOxY8cO5OTkAAByc3Nx/vx5hIaGao3VqFEj9Qigv7+/xjJ3d3ds2LABEydORKtWrTBs2DDIZLJCo6m//fYbxowZgw0bNmD06NGwt7fXWC6XyxEaGgqFQoFffvlFa9I8efJk1K1bF1999ZXOz12U9u3bo0GDBggKCkLTpk1LFIOIKgcmgESkHvkrGAkszoULF5CSkgJzc3P1LWW2b9+OhIQEAMDMmTNhZ2eH6dOnl0n/CmauXrlyRV02adIk/Pbbbzh37pzOdosWLYKrq2uh8gEDBuDRo0f4448/AKhm+crlcnTt2lVrnIIRwPPnzxcacWzbti2qVq2KDz/8EI0bN1ZfH5iVlaVRr2HDhhg3bpzOvo4ZMwaXLl1CYmKiUW9O7ezszIkfRMQEkIhUCR0A+Pr66t2mZcuW+OeffzReBQnVtm3bcO7cOUilUnWCmJycjCFDhhh8X0G5XI6IiAi8++67OHLkCFatWgVANelj+vTpqFatmkHxAMDNzQ1NmzZVT4KIjo5GjRo1dH7+Ro0a4d9//8WVK1cKJYBTpkxBeHg4rK2tMX36dCQnJ2uNERAQoPM+hYBqFDYmJgYNGjTAzJkztdZZu3YtBEHAggUL9PmYREQ68RpAIsIPP/wAS0tL9Wzb4vj5+eH48eNo0KABLCwsAABbtmxBdHQ0li1bhr179yI3N1ejTbdu3TBixAj07NnToL6NHz8eSqUSy5cvx6uvvorx48ejY8eO8PLywueff25QrGd16tRJfZuZqKgodOrUSWfdOnXqwNraGoIgwMfHR2PZypUrERERoZ5tXHA/QUMtXboUrq6u+OKLL9ChQweMGjWq0I2r79y5A5lMhqpVq5Yo8SUiKsARQCITFR8fjwMHDmDQoEHYsmULvvzyS71PAX/00UeQy+Xo27cvDh48iE2bNmHkyJHqEa6Ceww++zI3N0etWrX0viZQEASMHTsWGzduxC+//AIrKyu8//77aNCgQZHP/C1KXl6e+mkYH374IQ4fPozc3FwcOnQIHTp00Kj37AxcsViMhg0bwtfXt9AonrOzM/78808cPXoUP/zwgzrOs0/d0EfBNX/t2rVD586dERERUajOtGnT0KBBAyxatMig2EREz2MCSGSiBgwYgNDQUPz333/YsWMHPvroI73bOjs74+DBg5DJZOjRowcmTpyIYcOGYeHChWXWv08++QSrV6/Gb7/9pj41KxaLsW3bNsybN09d79q1a4iOjkZycrLGrNtnKRQKCIKA1atXq09Le3p6ok6dOrCwsMDjx48xaNAg9elqc3Nz/PfffxoxGjVqpHXG8bp165CTk4OuXbvi22+/xYIFC+Ds7Ixjx46V+LMvWLAAUVFR2LVrV4ljEBEVRSToO+2PiOgFysrKwuXLl9GsWbMi67333ntYs2YN/Pz8sHPnTtSpU6dQncDAQHTt2hUjRozAvXv3YG5urjOeIAjIyclBgwYNNB4nR0RUmTABJKKXWkpKCgRB0HiE3fMaNGiA0NBQzJ8//wX2jIio4mICSERERGRieA0gERERkYlhAkhERERkYpgAEhEREZkYJoBEREREJoYJIBEREZGJYQJIREREZGKYABIRERGZGCaARERERCaGCSARERGRiWECSERERGRimAASERERmRgmgEREREQmhgkgERERkYlhAkhERERkYpgAEhEREZkYJoBEREREJoYJIBEREZGJYQJIREREZGKYABIRERGZGCaARERERCaGCSARUTnJycnBpk2byrsbRGSCmAASEZWCIAho1KgR+vXrp1F+8uRJiEQiREVF6Wz7zTff4OHDhwAALy8viEQiSKVSeHl54aOPPkJqaqoRe05EpkwkCIJQ3p0gInqZrV+/HkOHDkViYiJq1qwJAOjTpw8SExNx+vR
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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6dOnl0n/CmauXrlyRV02adIk/Pbbbzh37pzOdosWLYKrq2uh8gEDBuDRo0f4448/AKhm+crlcnTt2lVrnIIRwPPnzxcacWzbti2qVq2KDz/8EI0bN1ZfH5iVlaVRr2HDhhg3bpzOvo4ZMwaXLl1CYmKiUW9O7ezszIkfRMQEkIhUCR0A+Pr66t2mZcuW+OeffzReBQnVtm3bcO7cOUilUnWCmJycjCFDhhh8X0G5XI6IiAi8++67OHLkCFatWgVANelj+vTpqFatmkHxAMDNzQ1NmzZVT4KIjo5GjRo1dH7+Ro0a4d9//8WVK1cKJYBTpkxBeHg4rK2tMX36dCQnJ2uNERAQoPM+hYBqFDYmJgYNGjTAzJkztdZZu3YtBEHAggUL9PmYREQ68RpAIsIPP/wAS0tL9Wzb4vj5+eH48eNo0KABLCwsAABbtmxBdHQ0li1bhr179yI3N1ejTbdu3TBixAj07NnToL6NHz8eSqUSy5cvx6uvvorx48ejY8eO8PLywueff25QrGd16tRJfZuZqKgodOrUSWfdOnXqwNraGoIgwMfHR2PZypUrERERoZ5tXHA/QUMtXboUrq6u+OKLL9ChQweMGjWq0I2r79y5A5lMhqpVq5Yo8SUiKsARQCITFR8fjwMHDmDQoEHYsmULvvzyS71PAX/00UeQy+Xo27cvDh48iE2bNmHkyJHqEa6Ceww++zI3N0etWrX0viZQEASMHTsWGzduxC+//AIrKyu8//77aNCgQZHP/C1KXl6e+mkYH374IQ4fPozc3FwcOnQIHTp00Kj37AxcsViMhg0bwtfXt9AonrOzM/78808cPXoUP/zwgzrOs0/d0EfBNX/t2rVD586dERERUajOtGnT0KBBAyxatMig2EREz2MCSGSiBgwYgNDQUPz333/YsWMHPvroI73bOjs74+DBg5DJZOjRowcmTpyIYcOGYeHChWXWv08++QSrV6/Gb7/9pj41KxaLsW3bNsybN09d79q1a4iOjkZycrLGrNtnKRQKCIKA1atXq09Le3p6ok6dOrCwsMDjx48xaNAg9elqc3Nz/PfffxoxGjVqpHXG8bp165CTk4OuXbvi22+/xYIFC+Ds7Ixjx46V+LMvWLAAUVFR2LVrV4ljEBEVRSToO+2PiOgFysrKwuXLl9GsWbMi67333ntYs2YN/Pz8sHPnTtSpU6dQncDAQHTt2hUjRozAvXv3YG5urjOeIAjIyclBgwYNNB4nR0RUmTABJKKXWkpKCgRB0HiE3fMaNGiA0NBQzJ8//wX2jIio4mICSERERGRieA0gERERkYlhAkhERERkYpgAEhEREZkYJoBEREREJoYJIBEREZGJYQJIREREZGKYABIRERGZGCaARERERCaGCSARERGRiWECSERERGRimAASERERmRgmgEREREQmhgkgERERkYlhAkhERERkYpgAEhEREZkYJoBEREREJoYJIBEREZGJYQJIREREZGKYABIRERGZGCaARERERCaGCSARUTnJycnBpk2byrsbRGSCmAASEZWCIAho1KgR+vXrp1F+8uRJiEQiREVF6Wz7zTff4OHDhwAALy8viEQiSKVSeHl54aOPPkJqaqoRe05EpkwkCIJQ3p0gInq
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(2,1,sharex=True)\n",
"ax[0].plot([i+1 for i in range(len(AlignMarkY.columns))],AYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='b')\n",
"AlignMarkY.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_Y:$0um\\pm0.10um$')\n",
"for i in range(len(AlignMarkY.columns)):\n",
" ax[0].annotate(round(AYdescibe.loc['mean'][i],3), \n",
" xy=(i+1,AYdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,AYdescibe.loc['mean'][i]),\n",
" fontsize=15,\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Y/Day')\n",
"labels = ax[0].get_xticklabels()\n",
"plt.setp(labels, rotation=90)\n",
"ax[1].plot([i+1 for i in range(len(AlignMarkY.columns))],AYdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_Y:$<0.800um$')\n",
"ax[1].axhline(0.5,c='green',ls='-.',label=r'3sigma_Y:$<0.500um$')\n",
"for i in range(len(AlignMarkY.columns)):\n",
" ax[1].annotate(round(AYdescibe.loc['3sigma'][i],3), \n",
" xy=(i+1,AYdescibe.loc['3sigma'][i]),\n",
" xytext=(i+0.95,AYdescibe.loc['3sigma'][i]),\n",
" fontsize=15,\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Y/Day')\n",
"labels = ax[1].get_xticklabels()\n",
"plt.setp(labels, rotation=90)\n",
"# ax[2].plot([i for i in AlignMarkY.columns],AYdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AlignMarkY.columns)):\n",
"# ax[2].annotate(round(AYdescibe.loc['range'][i],3), \n",
"# xy=(i,AYdescibe.loc['range'][i]),\n",
"# xytext=(i,AYdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_Y/Day')\n",
"plt.suptitle(f'{DieType} 对位MarkY')\n",
"fig.tight_layout()\n",
"plt.savefig(f'{DieType}/{DieType}对位MarkY.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "57aab54c-ca77-46e9-bdfa-becc3323ab8f",
"metadata": {},
"source": [
"## 角度"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3b9aba3d-417d-4292-ac07-8c9d25d260b8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>11.22.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>87.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.000260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.001399</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.001762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.000350</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.000046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.000612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.010965</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.012727</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.004198</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die4\n",
"count 87.000000\n",
"mean 0.000260\n",
"std 0.001399\n",
"min -0.001762\n",
"25% -0.000350\n",
"50% 0.000046\n",
"75% 0.000612\n",
"max 0.010965\n",
"range 0.012727\n",
"3sigma 0.004198"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Angle = TotalData['Angle14'].reset_index().dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,die_nums:].sort_index(axis=1)\n",
"Angdescibe = describe_3s(Angle)\n",
"Angdescibe"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "5ce2eec7-a959-4716-92a0-4aaad88b96b3",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:6: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[0].annotate(round(Angdescibe.loc['mean'][i],5),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,Angdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,Angdescibe.loc['mean'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:18: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" ax[1].annotate(round(Angdescibe.loc['3sigma'][i],5),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xy=(i+1,Angdescibe.loc['3sigma'][i]),\n",
"C:\\Users\\yangdongdong\\AppData\\Local\\Temp\\ipykernel_11008\\3274916886.py:20: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" xytext=(i+0.95,Angdescibe.loc['3sigma'][i]),\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d754ccc4d90e45228e37e6f93406baab",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(2,1,sharex=True)\n",
"ax[0].plot([i+1 for i in range(len(Angdescibe.columns))],Angdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='b')\n",
"Angle.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_Angle:$0°\\pm0.0005°$')\n",
"for i in range(len(Angle.columns)):\n",
" ax[0].annotate(round(Angdescibe.loc['mean'][i],5), \n",
" xy=(i+1,Angdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,Angdescibe.loc['mean'][i]),\n",
" fontsize=12,\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Angle/Day')\n",
"labels = ax[0].get_xticklabels()\n",
"plt.setp(labels, rotation=90)\n",
"ax[1].plot([i+1 for i in range(len(Angdescibe.columns))],Angdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.001,c='orange',ls='-.',label=r'3sigma_Angle:$<0.001°$')\n",
"for i in range(len(Angdescibe.columns)):\n",
" ax[1].annotate(round(Angdescibe.loc['3sigma'][i],5), \n",
" xy=(i+1,Angdescibe.loc['3sigma'][i]),\n",
" xytext=(i+0.95,Angdescibe.loc['3sigma'][i]),\n",
" fontsize=12,\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Angle/Day')\n",
"labels = ax[1].get_xticklabels()\n",
"plt.setp(labels, rotation=90)\n",
"# ax[2].plot([i for i in Angle.columns],Angdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(Angle.columns)):\n",
"# ax[2].annotate(round(Angdescibe.loc['range'][i],3), \n",
"# xy=(i,Angdescibe.loc['range'][i]),\n",
"# xytext=(i,Angdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_Angle/Day')\n",
"plt.suptitle(f'{DieType} 角度(°)')\n",
"fig.tight_layout()\n",
"plt.savefig(f'{DieType}/{DieType}角度.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "639173af",
"metadata": {},
"source": [
"### 补偿值计算"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c25e8976-f7cc-418f-8b1f-04a06a5b3386",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "02671fdb41864194ab7513377e8b4683",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# BC_X = pd.concat([AlignMarkX[i]-AlignMarkX[i].mean() for i in AlignMarkX.columns[-2:]],axis=1)\n",
"fig, ax = plt.subplots(3,1,sharex=True)\n",
"\n",
"BC_X = pd.concat([AlignMarkX[i] for i in AlignMarkX.columns[-3:]],axis=1)\n",
"BC_X.plot(ax=ax[0],marker='o')\n",
"ax[0].set_title(f'{DieType}')\n",
"ax[0].set_ylabel('TX/um')\n",
"ax[0].xaxis.set_major_locator(MultipleLocator(5))\n",
"ax[0].yaxis.set_major_locator(MultipleLocator(0.2))\n",
"\n",
"TX_Mean_per_col = BC_X.mean()\n",
"for col, mean_val in TX_Mean_per_col.items():\n",
" ax[0].axhline(mean_val, c='orange', ls='-.', alpha=0.7,\n",
" label=r'Mean_TX: ${:.4f}±0.3um$'.format(mean_val))\n",
"\n",
"TX_Mean_per_col_down = BC_X.mean() - 0.3\n",
"for col, mean_val in TX_Mean_per_col_down.items():\n",
" ax[0].axhline(mean_val, c='green', ls='-.', alpha=0.7) \n",
" \n",
"TX_Mean_per_col_up = BC_X.mean() + 0.3\n",
"for col, mean_val in TX_Mean_per_col_up.items():\n",
" ax[0].axhline(mean_val, c='green', ls='-.', alpha=0.7) \n",
"ax[0].legend()\n",
"ax[0].grid()\n",
"\n",
"plt.subplot(312)\n",
"BC_Y = pd.concat([AlignMarkY[i] for i in AlignMarkY.columns[-3:]],axis=1)\n",
"BC_Y.plot(ax=ax[1],marker='o')\n",
"ax[1].set_ylabel('TY/um')\n",
"ax[1].xaxis.set_major_locator(MultipleLocator(5))\n",
"ax[1].yaxis.set_major_locator(MultipleLocator(0.2))\n",
"\n",
"TY_Mean_per_col = BC_Y.mean() # 结果是 Series索引为列名值为对应列的均值\n",
"for col, mean_val in TY_Mean_per_col.items():\n",
" ax[1].axhline(mean_val, c='orange', ls='-.', alpha=0.7,\n",
" label=r'Mean_TY: ${:.4f}±0.3um$'.format(mean_val)) # 标注列名和均值\n",
"TY_Mean_per_col_down = BC_Y.mean() - 0.3\n",
"for col, mean_val in TY_Mean_per_col_down.items():\n",
" ax[1].axhline(mean_val, c='green', ls='-.', alpha=0.7) \n",
" \n",
"TY_Mean_per_col_up = BC_Y.mean() + 0.3\n",
"for col, mean_val in TY_Mean_per_col_up.items():\n",
" ax[1].axhline(mean_val, c='green', ls='-.', alpha=0.7) \n",
"ax[1].legend()\n",
"ax[1].grid()\n",
"\n",
"plt.subplot(313)\n",
"BC_A = pd.concat([Angle[i] for i in Angle.columns[-3:]],axis=1)\n",
"BC_A.plot(ax=ax[2],marker='o')\n",
"ax[2].set_ylabel('Angle/°')\n",
"ax[2].xaxis.set_major_locator(MultipleLocator(5))\n",
"ax[2].yaxis.set_major_locator(MultipleLocator(0.001))\n",
"\n",
"ax[2].grid()\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f7ce0274-e546-4a11-8d02-57f7fdcb8de6",
"metadata": {},
"outputs": [],
"source": [
"# # BC_Y = pd.concat([AlignMarkY[i]-AlignMarkY[i].mean() for i in AlignMarkY.columns[-2:]],axis=1)\n",
"# BC_Y = pd.concat([AlignMarkY[i] for i in AlignMarkY.columns[-3:]],axis=1)\n",
"# BC_Y.plot(marker='o')\n",
"# plt.title(f'{DieType}-TYum')\n",
"# plt.grid()\n",
"# plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "a94845fc-49f0-41a1-99a0-b5f5cdff1a69",
"metadata": {},
"outputs": [],
"source": [
"# # BC_A = pd.concat([Angle[i]-Angle[i].mean() for i in Angle.columns[-2:]],axis=1)\n",
"# BC_A = pd.concat([Angle[i] for i in Angle.columns[-3:]],axis=1)\n",
"# BC_A.plot(marker='o')\n",
"# plt.title(f'{DieType}角度(°)')\n",
"# plt.grid()\n",
"# plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "76bf329c",
"metadata": {},
"outputs": [],
"source": [
"# (((6210 + 6210)/2)**2 + ((6025.8-6265)/2)**2)**0.5\n",
"# 6211.151596926289"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b62b7df1",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TX</th>\n",
" <th>TY</th>\n",
" <th>Angle</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Index</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.286466</td>\n",
" <td>-0.099646</td>\n",
" <td>0.001360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.089971</td>\n",
" <td>0.000292</td>\n",
" <td>0.000989</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.166026</td>\n",
" <td>-0.078894</td>\n",
" <td>0.000275</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.084077</td>\n",
" <td>-0.212409</td>\n",
" <td>0.001054</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>-0.102113</td>\n",
" <td>-0.021456</td>\n",
" <td>0.001089</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.081363</td>\n",
" <td>0.048996</td>\n",
" <td>0.000456</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.134579</td>\n",
" <td>0.182424</td>\n",
" <td>0.000345</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>-0.257610</td>\n",
" <td>-0.244869</td>\n",
" <td>0.001163</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.357490</td>\n",
" <td>0.547557</td>\n",
" <td>0.002009</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>-0.186574</td>\n",
" <td>-0.038087</td>\n",
" <td>0.000844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>-0.045186</td>\n",
" <td>-0.080038</td>\n",
" <td>-0.001762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>-0.255282</td>\n",
" <td>-0.233365</td>\n",
" <td>0.000474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>-0.200585</td>\n",
" <td>-0.069435</td>\n",
" <td>0.000293</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>-0.412779</td>\n",
" <td>-0.186109</td>\n",
" <td>-0.000111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>-0.579573</td>\n",
" <td>-0.389526</td>\n",
" <td>0.001018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>-0.197449</td>\n",
" <td>-0.255939</td>\n",
" <td>0.001523</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>-0.128810</td>\n",
" <td>0.449710</td>\n",
" <td>0.001344</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.011750</td>\n",
" <td>-0.401577</td>\n",
" <td>0.001478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.264649</td>\n",
" <td>-0.030688</td>\n",
" <td>-0.000241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.041735</td>\n",
" <td>-0.078299</td>\n",
" <td>-0.001279</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>-0.010870</td>\n",
" <td>-0.078970</td>\n",
" <td>0.000565</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>-0.145795</td>\n",
" <td>-0.062216</td>\n",
" <td>0.001083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>-0.386858</td>\n",
" <td>-0.002877</td>\n",
" <td>0.000241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>-0.152240</td>\n",
" <td>0.007710</td>\n",
" <td>-0.000171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>-0.169127</td>\n",
" <td>-0.167815</td>\n",
" <td>-0.000477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.168982</td>\n",
" <td>0.018531</td>\n",
" <td>0.000153</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>-0.192712</td>\n",
" <td>-0.163013</td>\n",
" <td>0.000251</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>-0.209667</td>\n",
" <td>0.008175</td>\n",
" <td>0.000012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.120788</td>\n",
" <td>-0.050288</td>\n",
" <td>0.001917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>-0.179186</td>\n",
" <td>-0.040210</td>\n",
" <td>-0.001007</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>-0.139628</td>\n",
" <td>-0.119106</td>\n",
" <td>0.000652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>-0.284626</td>\n",
" <td>-0.582960</td>\n",
" <td>-0.000407</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>-0.451617</td>\n",
" <td>-0.468768</td>\n",
" <td>-0.000343</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>-0.231227</td>\n",
" <td>-0.082211</td>\n",
" <td>-0.000640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>-0.052870</td>\n",
" <td>-0.126678</td>\n",
" <td>0.000983</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.029127</td>\n",
" <td>0.099760</td>\n",
" <td>-0.000206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>-0.129895</td>\n",
" <td>-0.059437</td>\n",
" <td>-0.000322</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>-0.185807</td>\n",
" <td>-0.199983</td>\n",
" <td>-0.000803</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.581881</td>\n",
" <td>0.956300</td>\n",
" <td>0.001617</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.084797</td>\n",
" <td>0.257197</td>\n",
" <td>-0.000107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.505409</td>\n",
" <td>0.459633</td>\n",
" <td>-0.001383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>-0.256583</td>\n",
" <td>0.116165</td>\n",
" <td>-0.000765</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>-0.001793</td>\n",
" <td>-0.146283</td>\n",
" <td>0.000260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>-0.257653</td>\n",
" <td>-0.149937</td>\n",
" <td>0.000386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>-0.222973</td>\n",
" <td>-0.016554</td>\n",
" <td>0.000360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>-0.113437</td>\n",
" <td>-0.021168</td>\n",
" <td>0.000206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.075015</td>\n",
" <td>0.078156</td>\n",
" <td>-0.000156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>-0.034601</td>\n",
" <td>-0.012941</td>\n",
" <td>-0.000319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>-0.169613</td>\n",
" <td>-0.029889</td>\n",
" <td>-0.000431</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>-0.178290</td>\n",
" <td>-0.271318</td>\n",
" <td>-0.000655</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>-0.019559</td>\n",
" <td>-0.213054</td>\n",
" <td>-0.000102</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>0.185633</td>\n",
" <td>0.051917</td>\n",
" <td>-0.001175</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>-0.251947</td>\n",
" <td>0.276380</td>\n",
" <td>-0.000335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>-0.035877</td>\n",
" <td>-0.111903</td>\n",
" <td>-0.000670</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>-0.526773</td>\n",
" <td>-0.144905</td>\n",
" <td>0.000039</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>-0.027901</td>\n",
" <td>-0.075180</td>\n",
" <td>-0.000413</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>-0.138361</td>\n",
" <td>-0.084353</td>\n",
" <td>0.000776</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.029564</td>\n",
" <td>0.028470</td>\n",
" <td>0.001001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.115792</td>\n",
" <td>0.141726</td>\n",
" <td>0.000582</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>-0.138213</td>\n",
" <td>0.140461</td>\n",
" <td>0.000312</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>-0.019936</td>\n",
" <td>-0.094621</td>\n",
" <td>-0.000188</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.191167</td>\n",
" <td>-0.053161</td>\n",
" <td>0.000628</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.161600</td>\n",
" <td>0.266831</td>\n",
" <td>0.000597</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>0.191098</td>\n",
" <td>-0.220388</td>\n",
" <td>0.000420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>0.172327</td>\n",
" <td>-0.473672</td>\n",
" <td>0.000498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>-0.205192</td>\n",
" <td>-0.186299</td>\n",
" <td>-0.000590</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>-0.378756</td>\n",
" <td>0.270402</td>\n",
" <td>-0.000333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.091360</td>\n",
" <td>0.092115</td>\n",
" <td>-0.000172</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.006246</td>\n",
" <td>-0.108903</td>\n",
" <td>-0.000482</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>-0.020615</td>\n",
" <td>-0.001064</td>\n",
" <td>0.000310</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.245524</td>\n",
" <td>0.101794</td>\n",
" <td>-0.000712</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>0.383603</td>\n",
" <td>0.180151</td>\n",
" <td>-0.001250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>0.050771</td>\n",
" <td>0.032917</td>\n",
" <td>-0.000063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>-0.068676</td>\n",
" <td>-0.045743</td>\n",
" <td>0.001780</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>0.126747</td>\n",
" <td>0.084578</td>\n",
" <td>-0.000170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>0.219371</td>\n",
" <td>0.739642</td>\n",
" <td>-0.000234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>-0.032782</td>\n",
" <td>-0.074379</td>\n",
" <td>-0.000115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>0.073033</td>\n",
" <td>0.092526</td>\n",
" <td>-0.000994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>0.094953</td>\n",
" <td>0.133150</td>\n",
" <td>-0.000357</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>0.409449</td>\n",
" <td>0.283109</td>\n",
" <td>0.000046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>-0.056112</td>\n",
" <td>0.005127</td>\n",
" <td>0.010965</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>0.243791</td>\n",
" <td>0.170469</td>\n",
" <td>0.000410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>0.112622</td>\n",
" <td>0.031403</td>\n",
" <td>-0.000410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>0.207750</td>\n",
" <td>0.160684</td>\n",
" <td>-0.000577</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>0.154672</td>\n",
" <td>0.230666</td>\n",
" <td>-0.000308</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>0.535792</td>\n",
" <td>0.708410</td>\n",
" <td>0.000899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>0.078105</td>\n",
" <td>0.159654</td>\n",
" <td>0.000163</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"Index \n",
"1 -0.286466 -0.099646 0.001360\n",
"2 0.089971 0.000292 0.000989\n",
"3 0.166026 -0.078894 0.000275\n",
"4 0.084077 -0.212409 0.001054\n",
"5 -0.102113 -0.021456 0.001089\n",
"6 0.081363 0.048996 0.000456\n",
"7 0.134579 0.182424 0.000345\n",
"8 -0.257610 -0.244869 0.001163\n",
"9 0.357490 0.547557 0.002009\n",
"10 -0.186574 -0.038087 0.000844\n",
"11 -0.045186 -0.080038 -0.001762\n",
"12 -0.255282 -0.233365 0.000474\n",
"13 -0.200585 -0.069435 0.000293\n",
"14 -0.412779 -0.186109 -0.000111\n",
"15 -0.579573 -0.389526 0.001018\n",
"16 -0.197449 -0.255939 0.001523\n",
"17 -0.128810 0.449710 0.001344\n",
"18 0.011750 -0.401577 0.001478\n",
"19 0.264649 -0.030688 -0.000241\n",
"20 0.041735 -0.078299 -0.001279\n",
"21 -0.010870 -0.078970 0.000565\n",
"22 -0.145795 -0.062216 0.001083\n",
"23 -0.386858 -0.002877 0.000241\n",
"24 -0.152240 0.007710 -0.000171\n",
"25 -0.169127 -0.167815 -0.000477\n",
"26 0.168982 0.018531 0.000153\n",
"27 -0.192712 -0.163013 0.000251\n",
"28 -0.209667 0.008175 0.000012\n",
"29 0.120788 -0.050288 0.001917\n",
"30 -0.179186 -0.040210 -0.001007\n",
"31 -0.139628 -0.119106 0.000652\n",
"32 -0.284626 -0.582960 -0.000407\n",
"33 -0.451617 -0.468768 -0.000343\n",
"34 -0.231227 -0.082211 -0.000640\n",
"35 -0.052870 -0.126678 0.000983\n",
"36 0.029127 0.099760 -0.000206\n",
"37 -0.129895 -0.059437 -0.000322\n",
"38 -0.185807 -0.199983 -0.000803\n",
"39 0.581881 0.956300 0.001617\n",
"40 0.084797 0.257197 -0.000107\n",
"41 0.505409 0.459633 -0.001383\n",
"42 -0.256583 0.116165 -0.000765\n",
"43 -0.001793 -0.146283 0.000260\n",
"44 -0.257653 -0.149937 0.000386\n",
"45 -0.222973 -0.016554 0.000360\n",
"46 -0.113437 -0.021168 0.000206\n",
"47 0.075015 0.078156 -0.000156\n",
"48 -0.034601 -0.012941 -0.000319\n",
"49 -0.169613 -0.029889 -0.000431\n",
"50 -0.178290 -0.271318 -0.000655\n",
"51 -0.019559 -0.213054 -0.000102\n",
"52 0.185633 0.051917 -0.001175\n",
"53 -0.251947 0.276380 -0.000335\n",
"54 -0.035877 -0.111903 -0.000670\n",
"55 -0.526773 -0.144905 0.000039\n",
"56 -0.027901 -0.075180 -0.000413\n",
"57 -0.138361 -0.084353 0.000776\n",
"58 0.029564 0.028470 0.001001\n",
"59 0.115792 0.141726 0.000582\n",
"60 -0.138213 0.140461 0.000312\n",
"61 -0.019936 -0.094621 -0.000188\n",
"62 0.191167 -0.053161 0.000628\n",
"63 0.161600 0.266831 0.000597\n",
"64 0.191098 -0.220388 0.000420\n",
"65 0.172327 -0.473672 0.000498\n",
"66 -0.205192 -0.186299 -0.000590\n",
"67 -0.378756 0.270402 -0.000333\n",
"68 0.091360 0.092115 -0.000172\n",
"69 0.006246 -0.108903 -0.000482\n",
"70 -0.020615 -0.001064 0.000310\n",
"71 0.245524 0.101794 -0.000712\n",
"72 0.383603 0.180151 -0.001250\n",
"73 0.050771 0.032917 -0.000063\n",
"74 -0.068676 -0.045743 0.001780\n",
"75 0.126747 0.084578 -0.000170\n",
"76 0.219371 0.739642 -0.000234\n",
"77 -0.032782 -0.074379 -0.000115\n",
"78 0.073033 0.092526 -0.000994\n",
"79 0.094953 0.133150 -0.000357\n",
"80 0.409449 0.283109 0.000046\n",
"81 -0.056112 0.005127 0.010965\n",
"82 0.243791 0.170469 0.000410\n",
"83 0.112622 0.031403 -0.000410\n",
"84 0.207750 0.160684 -0.000577\n",
"85 0.154672 0.230666 -0.000308\n",
"86 0.535792 0.708410 0.000899\n",
"87 0.078105 0.159654 0.000163"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DieBC = pd.read_excel('SP-Die补偿模版.xlsx',index_col=0,header=0)\n",
"\n",
"BC_X = BC_X.mean(axis=1)\n",
"# DieBC['TX'] = BC_X.fillna(BC_X.interpolate()).values\n",
"DieBC['TX'] = BC_X\n",
"\n",
"BC_Y = BC_Y.mean(axis=1)\n",
"# DieBC['TY'] = BC_Y.fillna(BC_Y.interpolate()).values\n",
"DieBC['TY'] = BC_Y\n",
"\n",
"BC_A = BC_A.mean(axis=1)\n",
"# DieBC['Angle'] = BC_A.fillna(BC_A.interpolate()).values\n",
"DieBC['Angle'] = BC_A\n",
"\n",
"DieBC['TX'] = DieBC['TX'] - 6211.1516 * np.sin(DieBC['Angle']*np.pi/180)\n",
"DieBC"
]
},
{
"cell_type": "markdown",
"id": "76c733d0",
"metadata": {},
"source": [
"# 计算补偿值"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "9a10b235",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TX</th>\n",
" <th>TY</th>\n",
" <th>Angle</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Index</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.286466</td>\n",
" <td>-0.099646</td>\n",
" <td>0.001360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.089971</td>\n",
" <td>0.000292</td>\n",
" <td>0.000989</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.166026</td>\n",
" <td>-0.078894</td>\n",
" <td>0.000275</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.084077</td>\n",
" <td>-0.212409</td>\n",
" <td>0.001054</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>-0.102113</td>\n",
" <td>-0.021456</td>\n",
" <td>0.001089</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.081363</td>\n",
" <td>0.048996</td>\n",
" <td>0.000456</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.134579</td>\n",
" <td>0.182424</td>\n",
" <td>0.000345</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>-0.257610</td>\n",
" <td>-0.244869</td>\n",
" <td>0.001163</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.357490</td>\n",
" <td>0.547557</td>\n",
" <td>0.002009</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>-0.186574</td>\n",
" <td>-0.038087</td>\n",
" <td>0.000844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>-0.045186</td>\n",
" <td>-0.080038</td>\n",
" <td>-0.001762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>-0.255282</td>\n",
" <td>-0.233365</td>\n",
" <td>0.000474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>-0.200585</td>\n",
" <td>-0.069435</td>\n",
" <td>0.000293</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>-0.412779</td>\n",
" <td>-0.186109</td>\n",
" <td>-0.000111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>-0.579573</td>\n",
" <td>-0.389526</td>\n",
" <td>0.001018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>-0.197449</td>\n",
" <td>-0.255939</td>\n",
" <td>0.001523</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>-0.128810</td>\n",
" <td>0.449710</td>\n",
" <td>0.001344</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.011750</td>\n",
" <td>-0.401577</td>\n",
" <td>0.001478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.264649</td>\n",
" <td>-0.030688</td>\n",
" <td>-0.000241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.041735</td>\n",
" <td>-0.078299</td>\n",
" <td>-0.001279</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>-0.010870</td>\n",
" <td>-0.078970</td>\n",
" <td>0.000565</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>-0.145795</td>\n",
" <td>-0.062216</td>\n",
" <td>0.001083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>-0.386858</td>\n",
" <td>-0.002877</td>\n",
" <td>0.000241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>-0.152240</td>\n",
" <td>0.007710</td>\n",
" <td>-0.000171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>-0.169127</td>\n",
" <td>-0.167815</td>\n",
" <td>-0.000477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.168982</td>\n",
" <td>0.018531</td>\n",
" <td>0.000153</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>-0.192712</td>\n",
" <td>-0.163013</td>\n",
" <td>0.000251</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>-0.209667</td>\n",
" <td>0.008175</td>\n",
" <td>0.000012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.120788</td>\n",
" <td>-0.050288</td>\n",
" <td>0.001917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>-0.179186</td>\n",
" <td>-0.040210</td>\n",
" <td>-0.001007</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>-0.139628</td>\n",
" <td>-0.119106</td>\n",
" <td>0.000652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>-0.284626</td>\n",
" <td>-0.582960</td>\n",
" <td>-0.000407</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>-0.451617</td>\n",
" <td>-0.468768</td>\n",
" <td>-0.000343</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>-0.231227</td>\n",
" <td>-0.082211</td>\n",
" <td>-0.000640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>-0.052870</td>\n",
" <td>-0.126678</td>\n",
" <td>0.000983</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.029127</td>\n",
" <td>0.099760</td>\n",
" <td>-0.000206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>-0.129895</td>\n",
" <td>-0.059437</td>\n",
" <td>-0.000322</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>-0.185807</td>\n",
" <td>-0.199983</td>\n",
" <td>-0.000803</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.084797</td>\n",
" <td>0.257197</td>\n",
" <td>-0.000107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.505409</td>\n",
" <td>0.459633</td>\n",
" <td>-0.001383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>-0.256583</td>\n",
" <td>0.116165</td>\n",
" <td>-0.000765</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>-0.001793</td>\n",
" <td>-0.146283</td>\n",
" <td>0.000260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>-0.257653</td>\n",
" <td>-0.149937</td>\n",
" <td>0.000386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>-0.222973</td>\n",
" <td>-0.016554</td>\n",
" <td>0.000360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>-0.113437</td>\n",
" <td>-0.021168</td>\n",
" <td>0.000206</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.075015</td>\n",
" <td>0.078156</td>\n",
" <td>-0.000156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>-0.034601</td>\n",
" <td>-0.012941</td>\n",
" <td>-0.000319</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>-0.169613</td>\n",
" <td>-0.029889</td>\n",
" <td>-0.000431</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>-0.178290</td>\n",
" <td>-0.271318</td>\n",
" <td>-0.000655</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>-0.019559</td>\n",
" <td>-0.213054</td>\n",
" <td>-0.000102</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>0.185633</td>\n",
" <td>0.051917</td>\n",
" <td>-0.001175</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>-0.251947</td>\n",
" <td>0.276380</td>\n",
" <td>-0.000335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>-0.035877</td>\n",
" <td>-0.111903</td>\n",
" <td>-0.000670</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>-0.526773</td>\n",
" <td>-0.144905</td>\n",
" <td>0.000039</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>-0.027901</td>\n",
" <td>-0.075180</td>\n",
" <td>-0.000413</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>-0.138361</td>\n",
" <td>-0.084353</td>\n",
" <td>0.000776</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.029564</td>\n",
" <td>0.028470</td>\n",
" <td>0.001001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.115792</td>\n",
" <td>0.141726</td>\n",
" <td>0.000582</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>-0.138213</td>\n",
" <td>0.140461</td>\n",
" <td>0.000312</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>-0.019936</td>\n",
" <td>-0.094621</td>\n",
" <td>-0.000188</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.191167</td>\n",
" <td>-0.053161</td>\n",
" <td>0.000628</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.161600</td>\n",
" <td>0.266831</td>\n",
" <td>0.000597</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>0.191098</td>\n",
" <td>-0.220388</td>\n",
" <td>0.000420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>0.172327</td>\n",
" <td>-0.473672</td>\n",
" <td>0.000498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>-0.205192</td>\n",
" <td>-0.186299</td>\n",
" <td>-0.000590</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>-0.378756</td>\n",
" <td>0.270402</td>\n",
" <td>-0.000333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.091360</td>\n",
" <td>0.092115</td>\n",
" <td>-0.000172</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.006246</td>\n",
" <td>-0.108903</td>\n",
" <td>-0.000482</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>-0.020615</td>\n",
" <td>-0.001064</td>\n",
" <td>0.000310</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.245524</td>\n",
" <td>0.101794</td>\n",
" <td>-0.000712</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>0.383603</td>\n",
" <td>0.180151</td>\n",
" <td>-0.001250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>0.050771</td>\n",
" <td>0.032917</td>\n",
" <td>-0.000063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>-0.068676</td>\n",
" <td>-0.045743</td>\n",
" <td>0.001780</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>0.126747</td>\n",
" <td>0.084578</td>\n",
" <td>-0.000170</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>-0.032782</td>\n",
" <td>-0.074379</td>\n",
" <td>-0.000115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>0.073033</td>\n",
" <td>0.092526</td>\n",
" <td>-0.000994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>0.094953</td>\n",
" <td>0.133150</td>\n",
" <td>-0.000357</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>0.409449</td>\n",
" <td>0.283109</td>\n",
" <td>0.000046</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>0.243791</td>\n",
" <td>0.170469</td>\n",
" <td>0.000410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>0.112622</td>\n",
" <td>0.031403</td>\n",
" <td>-0.000410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>0.207750</td>\n",
" <td>0.160684</td>\n",
" <td>-0.000577</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>0.154672</td>\n",
" <td>0.230666</td>\n",
" <td>-0.000308</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>0.078105</td>\n",
" <td>0.159654</td>\n",
" <td>0.000163</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"Index \n",
"1 -0.286466 -0.099646 0.001360\n",
"2 0.089971 0.000292 0.000989\n",
"3 0.166026 -0.078894 0.000275\n",
"4 0.084077 -0.212409 0.001054\n",
"5 -0.102113 -0.021456 0.001089\n",
"6 0.081363 0.048996 0.000456\n",
"7 0.134579 0.182424 0.000345\n",
"8 -0.257610 -0.244869 0.001163\n",
"9 0.357490 0.547557 0.002009\n",
"10 -0.186574 -0.038087 0.000844\n",
"11 -0.045186 -0.080038 -0.001762\n",
"12 -0.255282 -0.233365 0.000474\n",
"13 -0.200585 -0.069435 0.000293\n",
"14 -0.412779 -0.186109 -0.000111\n",
"15 -0.579573 -0.389526 0.001018\n",
"16 -0.197449 -0.255939 0.001523\n",
"17 -0.128810 0.449710 0.001344\n",
"18 0.011750 -0.401577 0.001478\n",
"19 0.264649 -0.030688 -0.000241\n",
"20 0.041735 -0.078299 -0.001279\n",
"21 -0.010870 -0.078970 0.000565\n",
"22 -0.145795 -0.062216 0.001083\n",
"23 -0.386858 -0.002877 0.000241\n",
"24 -0.152240 0.007710 -0.000171\n",
"25 -0.169127 -0.167815 -0.000477\n",
"26 0.168982 0.018531 0.000153\n",
"27 -0.192712 -0.163013 0.000251\n",
"28 -0.209667 0.008175 0.000012\n",
"29 0.120788 -0.050288 0.001917\n",
"30 -0.179186 -0.040210 -0.001007\n",
"31 -0.139628 -0.119106 0.000652\n",
"32 -0.284626 -0.582960 -0.000407\n",
"33 -0.451617 -0.468768 -0.000343\n",
"34 -0.231227 -0.082211 -0.000640\n",
"35 -0.052870 -0.126678 0.000983\n",
"36 0.029127 0.099760 -0.000206\n",
"37 -0.129895 -0.059437 -0.000322\n",
"38 -0.185807 -0.199983 -0.000803\n",
"39 NaN NaN NaN\n",
"40 0.084797 0.257197 -0.000107\n",
"41 0.505409 0.459633 -0.001383\n",
"42 -0.256583 0.116165 -0.000765\n",
"43 -0.001793 -0.146283 0.000260\n",
"44 -0.257653 -0.149937 0.000386\n",
"45 -0.222973 -0.016554 0.000360\n",
"46 -0.113437 -0.021168 0.000206\n",
"47 0.075015 0.078156 -0.000156\n",
"48 -0.034601 -0.012941 -0.000319\n",
"49 -0.169613 -0.029889 -0.000431\n",
"50 -0.178290 -0.271318 -0.000655\n",
"51 -0.019559 -0.213054 -0.000102\n",
"52 0.185633 0.051917 -0.001175\n",
"53 -0.251947 0.276380 -0.000335\n",
"54 -0.035877 -0.111903 -0.000670\n",
"55 -0.526773 -0.144905 0.000039\n",
"56 -0.027901 -0.075180 -0.000413\n",
"57 -0.138361 -0.084353 0.000776\n",
"58 0.029564 0.028470 0.001001\n",
"59 0.115792 0.141726 0.000582\n",
"60 -0.138213 0.140461 0.000312\n",
"61 -0.019936 -0.094621 -0.000188\n",
"62 0.191167 -0.053161 0.000628\n",
"63 0.161600 0.266831 0.000597\n",
"64 0.191098 -0.220388 0.000420\n",
"65 0.172327 -0.473672 0.000498\n",
"66 -0.205192 -0.186299 -0.000590\n",
"67 -0.378756 0.270402 -0.000333\n",
"68 0.091360 0.092115 -0.000172\n",
"69 0.006246 -0.108903 -0.000482\n",
"70 -0.020615 -0.001064 0.000310\n",
"71 0.245524 0.101794 -0.000712\n",
"72 0.383603 0.180151 -0.001250\n",
"73 0.050771 0.032917 -0.000063\n",
"74 -0.068676 -0.045743 0.001780\n",
"75 0.126747 0.084578 -0.000170\n",
"76 NaN NaN NaN\n",
"77 -0.032782 -0.074379 -0.000115\n",
"78 0.073033 0.092526 -0.000994\n",
"79 0.094953 0.133150 -0.000357\n",
"80 0.409449 0.283109 0.000046\n",
"81 NaN NaN NaN\n",
"82 0.243791 0.170469 0.000410\n",
"83 0.112622 0.031403 -0.000410\n",
"84 0.207750 0.160684 -0.000577\n",
"85 0.154672 0.230666 -0.000308\n",
"86 NaN NaN NaN\n",
"87 0.078105 0.159654 0.000163"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"StartIndex = 1\n",
"EndIndex = None\n",
"error_list = [39,76,81,86]\n",
"DieBC.loc[error_list,:] = np.nan\n",
"DieBC.loc[StartIndex:EndIndex,:]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "86479909",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TX</th>\n",
" <th>TY</th>\n",
" <th>Angle</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>83.000000</td>\n",
" <td>83.000000</td>\n",
" <td>83.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.037741</td>\n",
" <td>-0.023577</td>\n",
" <td>0.000113</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.210751</td>\n",
" <td>0.198519</td>\n",
" <td>0.000777</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.579573</td>\n",
" <td>-0.582960</td>\n",
" <td>-0.001762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.186191</td>\n",
" <td>-0.122892</td>\n",
" <td>-0.000382</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.027901</td>\n",
" <td>-0.038087</td>\n",
" <td>0.000039</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.103788</td>\n",
" <td>0.092321</td>\n",
" <td>0.000574</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.505409</td>\n",
" <td>0.547557</td>\n",
" <td>0.002009</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.084982</td>\n",
" <td>1.130518</td>\n",
" <td>0.003771</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.632252</td>\n",
" <td>0.595557</td>\n",
" <td>0.002332</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"count 83.000000 83.000000 83.000000\n",
"mean -0.037741 -0.023577 0.000113\n",
"std 0.210751 0.198519 0.000777\n",
"min -0.579573 -0.582960 -0.001762\n",
"25% -0.186191 -0.122892 -0.000382\n",
"50% -0.027901 -0.038087 0.000039\n",
"75% 0.103788 0.092321 0.000574\n",
"max 0.505409 0.547557 0.002009\n",
"range 1.084982 1.130518 0.003771\n",
"3sigma 0.632252 0.595557 0.002332"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"describe_3s(DieBC.loc[StartIndex:EndIndex,:])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e4c88a5f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"全局补偿X: 0.0377\n",
"全局补偿Y: 0.0236\n",
"全局补偿角度: -0.000113\n"
]
}
],
"source": [
"X_overall,y_overall,theta_overall = DieBC.loc[StartIndex:EndIndex,:].describe().loc['mean',:]\n",
"print(f'全局补偿X: {-X_overall:.4f}')\n",
"print(f'全局补偿Y: {-y_overall:.4f}')\n",
"print(f'全局补偿角度: {-theta_overall:.6f}')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1221fd7e",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {
"21d8b0ba77b54fbfabcdf5f52b80df1a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
},
"2a0670114f11457b80a6ef3ef22a34fc": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "ToolbarModel",
"state": {
"_model_module_version": "^0.11",
"_view_module_version": "^0.11",
"collapsed": true,
"layout": "IPY_MODEL_f7658ea254754f89ae1eaaca3822afd1",
"orientation": "vertical",
"toolitems": [
[
"Home",
"Reset original view",
"home",
"home"
],
[
"Back",
"Back to previous view",
"arrow-left",
"back"
],
[
"Forward",
"Forward to next view",
"arrow-right",
"forward"
],
[
"Pan",
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
"arrows",
"pan"
],
[
"Zoom",
"Zoom to rectangle\nx/y fixes axis",
"square-o",
"zoom"
],
[
"Download",
"Download plot",
"floppy-o",
"save_figure"
]
]
}
},
"2d1533973ff749659dd783abe0db740f": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "ToolbarModel",
"state": {
"_model_module_version": "^0.11",
"_view_module_version": "^0.11",
"collapsed": true,
"layout": "IPY_MODEL_b8d4c7781ff5497da21ab97b922bac2f",
"orientation": "vertical",
"toolitems": [
[
"Home",
"Reset original view",
"home",
"home"
],
[
"Back",
"Back to previous view",
"arrow-left",
"back"
],
[
"Forward",
"Forward to next view",
"arrow-right",
"forward"
],
[
"Pan",
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
"arrows",
"pan"
],
[
"Zoom",
"Zoom to rectangle\nx/y fixes axis",
"square-o",
"zoom"
],
[
"Download",
"Download plot",
"floppy-o",
"save_figure"
]
]
}
},
"30e39652821f45d4b6a059be76bf8b9b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
},
"403a3e58c30643c69e94e76f12bc0587": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "MPLCanvasModel",
"state": {
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQd0VNX2xr+Z9ISENOwN7B2sPCyAigIiioIFn+XZQGyIVCk+ERWxIYgFfBbsoqiIFRHFhgqKoogN+98GJCSkJzP/te/NJDOTKXdm9iRzM99Zy6Vmzt3n3N8p93yn7ONwu91uMJAACZAACZAACZAACZAACZAACZAACbQpAQcFepvyZ+IkQAIkQAIkQAIkQAIkQAIkQAIkYBCgQGdFIAESIAESIAESIAESIAESIAESIIEEIECBngCFwCyQAAmQAAmQAAmQAAmQAAmQAAmQAAU66wAJkAAJkAAJkAAJkAAJkAAJkAAJJAABCvQEKARmgQRIgARIgARIgARIgARIgARIgAQo0FkHSIAESIAESIAESIAESIAESIAESCABCFCgJ0AhMAskQAIkQAIkQAIkQAIkQAIkQAIkQIHOOkACJEACJEACJEACJEACJEACJEACCUCAAj0BCoFZIAESIAESIAESIAESIAESIAESIAEKdNYBEiABEiABEiABEiABEiABEiABEkgAAhToCVAIzAIJkAAJkAAJkAAJkAAJkAAJkAAJUKCzDpAACZAACZAACZAACZAACZAACZBAAhCgQE+AQmAWSIAESIAEkpvA8OHDsd9+++GSSy5Benp6csPg25MACZAACZBAEhOgQE/iwuerkwAJkAAJtD2B33//Hccccwz23XdfLFy4sO0zxByQAAmQAAmQAAm0GQEK9DZDz4RJgARIgAQCEfjtt99w7LHHGj85HA507NgRu+66K0488UScfvrpSEtLCwhOxO2ECRMwf/58HH744THB3bRpE2699VYsX74cpaWlyM/Px+DBg3HllVciJSUlJtv+D7/wwgsYN24cLrvsMsN+PMM///yDU089FVdffbXxb60wdepUPP7443jooYfQo0cPH7MbN27EzTffjJUrV6KkpATbbLMN+vfvD9k1kJGRoZUFHztut9tI488//8Q777yDvLw8n9+vueYaLF68GE8//TS6du0alzzQKAmQAAmQAAlEQ4ACPRpqfIYESIAESCBuBDwCfbvttsPAgQPx999/Y9myZYa4E+E9d+5cZGZmtkhfS6BXVFQY4vWnn37CTjvthM6dO2PVqlXYsmUL/v3vf2Py5MkR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
"_figure_label": "Figure 2",
"_model_module_version": "^0.11",
"_size": [
800,
550
],
"_view_module_version": "^0.11",
"layout": "IPY_MODEL_6bd4aa27ce3d4da78e5e37533a8df70a",
"toolbar": "IPY_MODEL_8a5b8401a4764aa19048fef48718488b",
"toolbar_position": "left"
}
},
"6bd4aa27ce3d4da78e5e37533a8df70a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
},
"8a5b8401a4764aa19048fef48718488b": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "ToolbarModel",
"state": {
"_model_module_version": "^0.11",
"_view_module_version": "^0.11",
"collapsed": true,
"layout": "IPY_MODEL_30e39652821f45d4b6a059be76bf8b9b",
"orientation": "vertical",
"toolitems": [
[
"Home",
"Reset original view",
"home",
"home"
],
[
"Back",
"Back to previous view",
"arrow-left",
"back"
],
[
"Forward",
"Forward to next view",
"arrow-right",
"forward"
],
[
"Pan",
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
"arrows",
"pan"
],
[
"Zoom",
"Zoom to rectangle\nx/y fixes axis",
"square-o",
"zoom"
],
[
"Download",
"Download plot",
"floppy-o",
"save_figure"
]
]
}
},
"8de2ee2a201f4e78b83bb73202597800": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
},
"b8d4c7781ff5497da21ab97b922bac2f": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
},
"cc2cbd4941e54dc4ab6e09927cb3f90b": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "MPLCanvasModel",
"state": {
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQd4FEUbx/93SUhISCAJTSwUUaoIAgKCSJHee5UmHUR6E+ldmhTpSBMEpAcQASkighRREUE6yocCqaSXu+9553KX28sltze5g0vyzvPwAHczs7O/md3b/75lNHq9Xg8uTIAJMAEmwASYABNgAkyACTABJsAEmMBzJaBhgf5c+fPBmQATYAJMgAkwASbABJgAE2ACTIAJCAIs0HkhMAEmwASYABNgAkyACTABJsAEmAATcAECLNBdYBJ4CEyACTABJsAEmAATYAJMgAkwASbABFig8xpgAkyACTABJsAEmAATYAJMgAkwASbgAgRYoLvAJPAQmAATYAJMgAkwASbABJgAE2ACTIAJsEDnNcAEmAATYAJMgAkwASbABJgAE2ACTMAFCLBAd4FJ4CEwASbABJgAE2ACTIAJMAEmwASYABNggc5rgAkwASbABJgAE2ACTIAJMAEmwASYgAsQYIHuApPAQ2ACTIAJMAEmwASYABNgAkyACTABJsACndcAE2ACTIAJMAEmwASYABNgAkyACTABFyDAAt0FJoGHwASYABNgAkyACTABJsAEmAATYAJMgAU6rwEmwASYABNgAkyACTABJsAEmAATYAIuQIAFugtMAg+BCTABJsAEmAATUE/g4sWLqFixovoGdtTU6/X4/fffUa5cOTtacVUmwASYABNgAo4hwALdMRy5FybABJgAE8jGBPr374+yZcuib9++yJEjRzYm4fxTP3v2LLp37y5YjxgxwuEHnDx5MrZu3Yqvv/4aFSpUcHj/3CETYAJMgAkwgfQIsEDn9cEEmAATYAJMIAMEHjx4gDp16qBMmTLYtWtXBnriprYIREdHo0WLFiAr944dO+Dv72+rid3fX7hwAV26dEGbNm0wc+ZMU3udTof4+HjExsYid+7c0Gg0dvfNDZgAE2ACTIAJ2CLAAt0WIf6eCTABJsAE7CLwzz//oG7duqINiRgSM6+++iqaNGmC9u3bw8PDw2p/JG7HjRuHjRs3okqVKnYd07JySEgIPvvsM5w6dQphYWHIkycP2rZtiyFDhsDNzS1DfVs23rNnD8aMGYNBgwaJ/p1ZHj9+jNatW2PYsGHib0eVqVOn4quvvsKXX36Jd955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
"_figure_label": "Figure 3",
"_model_module_version": "^0.11",
"_size": [
800,
550
],
"_view_module_version": "^0.11",
"layout": "IPY_MODEL_8de2ee2a201f4e78b83bb73202597800",
"toolbar": "IPY_MODEL_2d1533973ff749659dd783abe0db740f",
"toolbar_position": "left"
}
},
"ee97a7eebb9a425eb0ade6e31817aa89": {
"model_module": "jupyter-matplotlib",
"model_module_version": "^0.11",
"model_name": "MPLCanvasModel",
"state": {
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQeYU0XXx//J9l5YwE71BQTFLoLSRKSLgKhYQEW6gIIICqgUQRBBsFBUqvopoggoIk2KiO8LqBQrIqJYgO29JPmeM3dvNjebbG6SyW7u7pnnQTB37pm5v5lb/jNnzphsNpsNnJgAE2ACTIAJMAEmwASYABNgAkyACTCBKiVgYoFepfy5cCbABJgAE2ACTIAJMAEmwASYABNgAoIAC3TuCEyACTABJsAEmAATYAJMgAkwASbABIKAAAv0IGgErgITYAJMgAkwASbABJgAE2ACTIAJMAEW6NwHmAATYAJMgAkwASbABJgAE2ACTIAJBAEBFuhB0AhcBSbABJgAE2ACTIAJMAEmwASYABNgAizQuQ8wASbABJgAE2ACTIAJMAEmwASYABMIAgIs0IOgEbgKTIAJMAEmwASYABNgAkyACTABJsAEWKBzH2ACTIAJMAEmwASYABNgAkyACTABJhAEBFigB0EjcBWYABNgAkyACTABJsAEmAATYAJMgAmwQOc+wASYABNgAkyACTABJsAEmAATYAJMIAgIsEAPgkbgKjABJsAEmAATYAJMgAkwASbABJgAE2CBzn2ACTABJsAEmAATYAJMgAkwASbABJhAEBBggR4EjcBVYAJMgAkwgZpNYNiwYWjRogWGDBmC8PDwmg2Dr54JMAEmwASYQA0mwAK9Bjc+XzoTYAJMgAlUPYHTp0+jY8eOaN68OT788MOqrxDXgAkwASbABJgAE6gyAizQqww9F8wEmAATYAKuCPz555+45ZZbxCGTyYSEhAQ0atQI3bt3R//+/REWFuYSHInbSZMmYdWqVbjhhhv8gpuWloa5c+di9+7dyMjIQGJiIvr164fRo0cjJCTEL9vOJ69fvx5PPvkkRo4cKewHMp09exZ9+vTBY489Jv6WlaZNm4a3334by5cvR+vWrTVmU1NTMWvWLBw4cADp6ek477zz0K1bN5DXQEREhKwqlLPzf//3f3jmmWeEV8K4cePsx3/44Qf07t0brVq1wsqVKwNWPhtmAkyACTABJuALARbovlDjc5gAE2ACTCBgBFSBfsEFF6BXr144c+YMdu7cKcQdCe+lS5ciMjKyXPmyBHpubq4QrydPnsQll1yCBg0a4ODBg8jJycF9992HKVOmeH3teXl5MJvNYnDBWeCPHz8eGzduFAL32muvdWm7pKQEhYWF4nxfXeCLioowaNAgcS0kmGUJ9CNHjoiBk06dOmHRokWa+lOd+/bti7///htdu3ZFVFQUvvnmG9A5HTp0wOLFi71mqfcEul6qE9Vh165d9j5DgzjUV1asWIEbb7xRrznOxwSYABNgAkygUgiwQK8UzFwIE2ACTIAJ6CWgCvTrr78eq1evFqdlZWWJmVASdzTzSjPAzik7O1uIeRL2JAR9TfPnzxfCkYTz4MGDxSz+P//8I4Qmzax/+eWXSE5O9sr8iBEjsH37dq/OcZXZV2FNbEaNGoX9+/cLs77aca6TxWLBnXfeiV9//RWffvopLrzwQk2W9957D1OnTsUHH3yAyy+/3H7siSeewIYNG/DRRx/hsssu85uLOwMkwulap0+fLgYRqP3atWsnyqS6cWICTIAJMAEmEGwEWKAHW4twfZgAE2ACNZyAK4FOSH777TcxC0su7ySSQ0NDpZOyWq1i1rVp06Z47bXXNPZVN25fZl5JiFL91RlwEv2USNiSizvN5Dq7hquF22w2kBCmmeBbb71VBJPzNtFs+alTp/DQQw/h5ZdflibQyUX8+eefx6OPPioGAJwTifOtW7fiq6++0hwicU4inQZDyN09UCk/P1+s709JSRFeCq+++ioWLlwoBmBoBp8TE2ACTIAJMIFgI8ACPdhahOvDBJgAE6jhBNwJdMJCa4dpDfHatWtxxRVXBIQUiXRyj3Z2oyexSbOuNKtPs/syEq2N3rRpE9atW+eT8NZbh4EDB4r12LQG/YEHHpAi0P/9918xYELr82n23NWyA5q9Jl579uxBrVq17NWdN2+eWKpA68SvuuoqvZfhUz4S4zQQQOU9/fTToh4ff/yxT7b4JCbABJgAE2ACgSbAAj3QhNk+E2ACTIAJeEWgIoE+YcIEIa5mz56NO+64Q2NXzxr0Y8eOiRlUWoddXFwsxCG5snualaZZbApcRwKXZoNjY2O9uiZXmWldNs3WN2vWTLiABzLRDDytff/666+lCfSxY8di8+bNuO2224RrO62NJ0aOAycUGI7W7ZN3wLPPPiuWBtB6cBLKtBSBZrVlB91z5kixA2i2nDwuyMV9wYIFYmCBExNgAkyACTCBYCTAAj0YW4XrxASYABOowQQqEugvvPAC3nrrLUycOBEPPvigVwKdxOkjjzyCuLg4dO7cGRR4jWZ+SbySQG7cuLFb6p988gkef/xxsQ6dXLplpBkzZojZ5WXLlqFt27YyTHq0UZFAp1lmT4ki2V988cUiFsDdd99dLju57lM0enJ5VxN5O0yePFmTlwZGqLzzzz/fU5FSjpMof/3110XAP2pzCtjHiQkwASbABJhAMBJggR6MrcJ1YgJMgAnUYAIVCXRaP01rw8eMGQMKvOaYKppBJ7f1Ll26gCK005rv2rVri1MPHTqEe+65B7fffjvmzJnjkjrNwNIWb5mZmULc0cyvv4nc9Ens00z80KFDPZqjddQkLv1NFQn0Jk2aeDSvbmFHdf7iiy/EoAaJ7/r164O8E2hrOop+T2u9yTuAotdT5PjvvvtObKkWHx+Pc+fOiSB+w4cPF4H/nJPajvS7asdjxTxkoAj5FEPguuuuw5o1a/w1x+czASbABJgAEwgYARboAUPLhpkAE2ACTMAXAhUJdBLRb775ptcz6EePHhWCmKJ3O89W04w8CfYdO3a4rC7tUU6i/qmnngKt5fY3keCnmWgKGqc3yRKqMlzcaX3+1VdfbfdAaNiwof0yfvrpJ7E1nrqFGgn2N954Q0Tep5l1coM/fvy42Jf8xx9/FAHraODEMckW6OQpQR4TtKSABmoq2s5Ob3twPibABJgAE2ACgSLAAj1QZNkuE2ACTIAJ+ESgIoGu7mFNru4UMM6VsFNneR2P0cy3q63Z1DwkHGlvbuekRhu/6aabhNBUo6/7dGGACD5HM8d79+4VJlzV1dE2DUbQoASVffPNN/tarP08GQKdgsPRIAetNSf3defUqlUrJCUlifXpNPNPQeRIdDum33//XYhmmmWnwQfHRFHfKYgcJQps5+9e5RSAjwZXKGo87dNOe80TV05MgAkwASbABIKRAAv0YGwVrhMTYAJMoAYTqEig08wzCWkSfM2bN9dQqsjFXRXortauu0P9yy+/iL2zac06zaB7u/e5s10KSkfr2D///HMhWjMyMnQLdE9CXm93kSHQyQPgmmuuEdujuVq3Tm7ktLacBjdo73PaGu6ll14qV0UKzEcB8lyJfL3X4ykfxRegetLSBvKQmDlzpogcH8hdADzViY8zASbABJgAE6iIAAt07h9MgAkwASYQVATcCXT6ncQe7WlN65+do39XJNBVF/e77rpLrEV2TFu2bBHromktuho8LDU1FZT3n3/+ESKaXLr9SSRqSZxTBHOaeabZf6qHJ+GtzqB7yqe3bjIEOpVFM+N169bFu+++qymaeLVr1w49evQQs+D0b1o+4BylntzcaV0/zcRTkLxAJYoST1H6KeI8eS7QsgIS7O3btxdB4zgxASbABJgAEwg2AizQg61FuD5MgAkwgRpOwJVAJ4FLQeFIYJKbOwUec06egsTRdmDp6elCLFJQM0q0Lpm23KL/p1lySjTbeu+994r91snFesCAAX61CG3tRTZIHF566aVClNMAA12HJ+EdrAKd3O5p7T653pP7PyWaraZt8Ghfd3XN/ODBg4U7P+2HToMStETgjz/+EO7mFAmetlujfdkdkywXd9oar2fPnqD+RLzJa4ES9SOaTaf2btq0qV9tyyczASbABJgAE5BN
"_figure_label": "Figure 1",
"_model_module_version": "^0.11",
"_size": [
800,
550
],
"_view_module_version": "^0.11",
"layout": "IPY_MODEL_21d8b0ba77b54fbfabcdf5f52b80df1a",
"toolbar": "IPY_MODEL_2a0670114f11457b80a6ef3ef22a34fc",
"toolbar_position": "left"
}
},
"f7658ea254754f89ae1eaaca3822afd1": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {}
}
},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}