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

2593 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 (96, 7)\n",
"MCY (96, 7)\n",
"Angle14 (96, 8)\n",
"RunOut (96, 8)\n",
"M1X (96, 7)\n",
"M1Y (96, 7)\n",
"M2X (96, 11)\n",
"M2Y (96, 11)\n",
"M3X (96, 102)\n",
"M3Y (96, 102)\n",
"M4X (96, 42)\n",
"M4Y (96, 42)\n",
"Angle13 (96, 102)\n",
"Note (7, 1)\n"
]
}
],
"source": [
"#写入TotalData\n",
"DieType = 'Die3'\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-Die3</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.064600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.286870</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.475871</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.087318</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.046930</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.231898</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.367917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.843788</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.860610</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die3\n",
"count 87.000000\n",
"mean 0.064600\n",
"std 0.286870\n",
"min -0.475871\n",
"25% -0.087318\n",
"50% 0.046930\n",
"75% 0.231898\n",
"max 1.367917\n",
"range 1.843788\n",
"3sigma 0.860610"
]
},
"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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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": "0ff1ed30f1d74bb78e3c3c541e5bc89f",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABu/klEQVR4nO3dd1hTZxsG8DsJYYqAggNEBRcCbrFqFfcedaB1VK3aWtpaB45qtVVrXa1arVVblc9R66p11F2r4qi21gGKaEUL4hYQAwoESN7vj0g0EjCHIUju33Xlgpzzvk+ek3M4Pr5nyYQQAkRERERkNuSFnQARERERvVosAImIiIjMDAtAIiIiIjPDApCIiIjIzLAAJCIiIjIzLACJiIiIzAwLQCIiIiIzwwKQiIiIyMywACSiYqF79+5YtmxZtvOTkpKMTk9MTCyolIiIiiwWgERULERGRuLevXtG58XFxcHd3R3ff/+9wfThw4ejW7duryI9IqIihQUgkZkJCQmBTCaDTCZDiRIl0KhRIwQHB+fYNrcOHz6M9957D/369cPSpUuRkZEhqf/cuXOxePFifP/99/rXihUrjLa1s7ODXG58l7Z7926oVCrUqVPHYPrgwYNx7NgxbN682Wi/6dOnQyaTYdSoUfppI0eOhEwmw/Tp0yUtS05kMhlCQkLyLd6L9uzZA5lMhmPHjumnff/997CwsMB///1XYJ9LREWXRWEnQESF4+eff0bp0qWxdu1avPfee7h582aWoqZBgwb4559/chV/48aNGD58ON599124u7vjs88+w59//okNGzaYHOPChQuwtrbWF3aXL19GUlISBg0aBKVSCQuLrLuw9PR0aDQaWFtb66etWrUKNWrUQPPmzREREQGtVgsLCwuULVsWAwcOhFwux5UrVwAAWq0W1tbW8PT01PcPCwszyOl106VLF9SrVw+LFy+Gv78/hBBYsmQJBgwYYLCcRGRGBBGZlSNHjggA4vz58/ppPXv2FEqlUty/fz9fPiMlJUU4OzuLNWvW6KetX79eyGQy8fDhw1zHDQoKEgMHDhQtWrQQALJ9vf322/o+Z8+eFQDExIkThRBC1K9fX9ja2goHBwejL3t7e9G7d28hhBDTpk0TAISjo6M+noODgwAgpk2bluvleBEAceTIkXyLZ8wvv/wiFAqFiI6OFrt37xYymUxEREQU6GcSUdHFEUAiwgcffIDt27dj//79GDx4cJ7jpaSkYO7cuXjnnXf001xdXSGEQFpamslxgoODUb58eXTu3BkAcO7cOfTq1Qvz5s2DUqmEra2tvq2/vz86duyICRMmGBy2/vLLLwEA9vb2AICzZ89KWpZGjRrhzJkziImJgRACSUlJ8PPzkxSjKOjVqxeqVauGpUuXIjQ0FL169ULNmjULOy0iKiQ8B5CI9OfGXb582WB6TucAhoaGonXr1rCxsYGnpycWLVqkn+fk5IThw4dDoVAAANRqNRYtWoQ333wTZcuWNTmv+Ph49OnTB3///TeSkpJw8uRJ+Pv7o3z58ggPD0eJEiX0L7lcDktLSzg5OcHR0RGA7hzEnTt36t8DQEZGBmbOnImTJ08afNbIkSPRsGFDPHr0yGC6jY0NqlatigsXLiAsLAyenp4GhScAfPvtt/rpdevWxR9//GEw/91338W7776LO3fuYODAgXB2dsb169eNLvP9+/dRpUoVvP3229BqtSZ/Vy8jl8sxefJkLF++HH/88Qc+++yzfItNRK8fFoBEhFKlSgEAEhISTGofHx+PNm3aoFSpUti/fz+CgoIwfvx4oxeTfPnll6hWrRouX76MLVu2SMpr4sSJmDBhArp27YpFixbB2dkZderUwdmzZ9GuXTtcvHgx275JSUkYOnQo3n77bYOLPywsLLB169YsF5OcPn0a1tbWBsViplq1aiEsLAwXLlxArVq1DOZt2LABQUFB+Oijj/D777+jWbNmCAgIyHLbmYcPH6Jp06b6C0icnZ2zfE5iYiI6deqEGjVqYP369Vkuannw4AGuXbuG+Pj4bJc7JwMGDICNjQ2aNWuG+vXr5yoGERUPLACJSD/KJ4Qwqf2SJUugUCiwceNGtGjRAiNHjsRbb72FdevWZWnbsGFDNG/eHNHR0fj5558l5zZ9+nR06dIFX3zxBfr37w8A8PPzQ+fOnTFlypRs+9nb2yMgIACLFy/OMm/QoEHYvn07UlNTAQBpaWm4cOECevToYTRWrVq19COAtWvXNpjn5uaG9evXY/z48WjWrBnee+89qFSqLKOpu3btwqhRo7B+/XqMHDkSDg4OBvPVajV69OgBjUaDX3/9FUqlMkseEydORLVq1fDNN99ku9w5uXjxImJjYxEaGoqHDx/mKgYRFQ8sAIlIP/KXORL4MpmFhKWlpf6WMtu2bUNkZGSWtp07d8bPP/+MhQsX4tNPP8XNmzcl59evXz8AwNWrV/XTJkyYgF27duHcuXPZ9luwYIHRQ84DBw7E48eP8fvvvwPQXeWrVqvRqVMno3FyGgFs0aIFSpcujQ8//BB16tTRnx+YnJxs0M7b2xtjxozJNtdRo0bh8uXLiIqKKrCbU8+cOROtW7dGyZIljRbGRGQ+WAASkf5Qqo+Pj8l9GjVqhPPnzxu8Mguq9PR03Lhxw6B99+7dIYTAv//+Kyk3tVqNoKAgvPvuuzh69ChWrVoFQHfRx2effQYXFxdJ8QCgfPnyqFevHvbu3QsAOH78OFxdXbNd/lq1auHff//F1atXsxSAn376KQICAmBra4vPPvssy3Jn8vPzy/Y+hYBuFDY0NBQ1a9bE559/brTNmjVrIITA3LlzTVlMA5cuXcKOHTswadIkjBo1CkuWLOFTUIjMGAtAIsLKlSthbW2tv9r2ZXx9fRETE4OaNWuibt26qFu3Lv7991/88MMPAIATJ06gRo0aBqN9mffZq1y5sqTcxo4dC61Wi2XLlmHevHkYO3YsoqOjAQCzZs2Cu7u7pHiZ2rVrh3379gHQXezSrl27bNtWqVIFtra2+gtCnrdixQoEBQVhwYIFePvtt3NdVC1ZsgRly5bFvHnzEBwcbHDvwUx3797FlStXEBsbKzn+rFmz4Ovri3bt2uGDDz5ARkYGli5dmqtciej1xwKQyExFRETg4MGDGDx4MDZv3oyvv/7a5EPAn3zyCdRqNfr164dDhw5h48aN+Oijj/QjXP7+/qhVqxY6deqEHTt2YOfOnfjwww/RrVu3LAVUdoQQGD16NDZs2IBff/0VNjY2GDFiBGrWrJnjM39zkp6ern8ayYcffogjR44gLS0Nhw8fRps2bQzaPX8Frlwuh7e3N3x8fLKM4jk7O+OPP/7AsWPHsHLlSn0cqU89yTznr2XLlmjfvj2CgoKytJk8eTJq1qyJBQsWSIp97do1bNmyBePGjQMAODg44L333sO3336b5VA1EZkHFoBEZmrgwIHo0aMH/vvvP2zfvh2ffPKJyX2dnZ1x6NAhqFQqdO3aFePHj8d7772H+fPnAwAUCgV+++031KpVC8OGDcOHH36I7t27S3oKyBdffIHg4GDs2rVLf2hWLpdj69atmD17tr7d9evXcfz4cdy4cUN/r78XaTQaCCEQHBwMpVIJmUyGSpUqoUqVKrCyssKTJ08wePBg/fmMlpaWWR6RVqtWrSyHfwFg7dq1SE1NRadOnbB06VLMnTsXzs7OOHHihMnL+qK5c+ciJCQEO3fuzHWM582ePRtlypTRX0QDAGPGjEFCQgJ+/PHHfPkMInq9yISpl/0REb1CycnJuHLlyktvVzJs2DCsXr0avr6+2LFjB6pUqZKlTePGjdGpUycEBgbi/v37sLS0zDaeEAKpqamoWbOmwePkiIiKExaARPRai42NhRACZcqUybZNzZo10aNHD8yZM+cVZkZEVHSxACQiIiIyMzwHkIiIiMjMsAAkIiIiMjMsAImIiIjMDAtAIiIiIjPDApCIiIjIzLAAJCIiIjIzLACJiIiIzAwLQCIiIiIzwwKQiIiIyMywACQiIiIyMywAiYiIiMwMC0AiIiIiM8MCkIiIiMjMsAAkIiIiMjM
"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,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABu/klEQVR4nO3dd1hTZxsG8DsJYYqAggNEBRcCbrFqFfcedaB1VK3aWtpaB45qtVVrXa1arVVblc9R66p11F2r4qi21gGKaEUL4hYQAwoESN7vj0g0EjCHIUju33Xlgpzzvk+ek3M4Pr5nyYQQAkRERERkNuSFnQARERERvVosAImIiIjMDAtAIiIiIjPDApCIiIjIzLAAJCIiIjIzLACJiIiIzAwLQCIiIiIzwwKQiIiIyMywACSiYqF79+5YtmxZtvOTkpKMTk9MTCyolIiIiiwWgERULERGRuLevXtG58XFxcHd3R3ff/+9wfThw4ejW7duryI9IqIihQUgkZkJCQmBTCaDTCZDiRIl0KhRIwQHB+fYNrcOHz6M9957D/369cPSpUuRkZEhqf/cuXOxePFifP/99/rXihUrjLa1s7ODXG58l7Z7926oVCrUqVPHYPrgwYNx7NgxbN682Wi/6dOnQyaTYdSoUfppI0eOhEwmw/Tp0yUtS05kMhlCQkLyLd6L9uzZA5lMhmPHjumnff/997CwsMB///1XYJ9LREWXRWEnQESF4+eff0bp0qWxdu1avPfee7h582aWoqZBgwb4559/chV/48aNGD58ON599124u7vjs88+w59//okNGzaYHOPChQuwtrbWF3aXL19GUlISBg0aBKVSCQuLrLuw9PR0aDQaWFtb66etWrUKNWrUQPPmzREREQGtVgsLCwuULVsWAwcOhFwux5UrVwAAWq0W1tbW8PT01PcPCwszyOl106VLF9SrVw+LFy+Gv78/hBBYsmQJBgwYYLCcRGRGBBGZlSNHjggA4vz58/ppPXv2FEqlUty/fz9fPiMlJUU4OzuLNWvW6KetX79eyGQy8fDhw1zHDQoKEgMHDhQtWrQQALJ9vf322/o+Z8+eFQDExIkThRBC1K9fX9ja2goHBwejL3t7e9G7d28hhBDTpk0TAISjo6M+noODgwAgpk2bluvleBEAceTIkXyLZ8wvv/wiFAqFiI6OFrt37xYymUxEREQU6GcSUdHFEUAiwgcffIDt27dj//79GDx4cJ7jpaSkYO7cuXjnnXf001xdXSGEQFpamslxgoODUb58eXTu3BkAcO7cOfTq1Qvz5s2DUqmEra2tvq2/vz86duyICRMmGBy2/vLLLwEA9vb2AICzZ89KWpZGjRrhzJkziImJgRACSUlJ8PPzkxSjKOjVqxeqVauGpUuXIjQ0FL169ULNmjULOy0iKiQ8B5CI9OfGXb582WB6TucAhoaGonXr1rCxsYGnpycWLVqkn+fk5IThw4dDoVAAANRqNRYtWoQ333wTZcuWNTmv+Ph49OnTB3///TeSkpJw8uRJ+Pv7o3z58ggPD0eJEiX0L7lcDktLSzg5OcHR0RGA7hzEnTt36t8DQEZGBmbOnImTJ08afNbIkSPRsGFDPHr0yGC6jY0NqlatigsXLiAsLAyenp4GhScAfPvtt/rpdevWxR9//GEw/91338W7776LO3fuYODAgXB2dsb169eNLvP9+/dRpUoVvP3229BqtSZ/Vy8jl8sxefJkLF++HH/88Qc+++yzfItNRK8fFoBEhFKlSgEAEhISTGofHx+PNm3aoFSpUti/fz+CgoIwfvx4oxeTfPnll6hWrRouX76MLVu2SMpr4sSJmDBhArp27YpFixbB2dkZderUwdmzZ9GuXTtcvHgx275JSUkYOnQo3n77bYOLPywsLLB169YsF5OcPn0a1tbWBsViplq1aiEsLAwXLlxArVq1DOZt2LABQUFB+Oijj/D777+jWbNmCAgIyHLbmYcPH6Jp06b6C0icnZ2zfE5iYiI6deqEGjVqYP369Vkuannw4AGuXbuG+Pj4bJc7JwMGDICNjQ2aNWuG+vXr5yoGERUPLACJSD/KJ4Qwqf2SJUugUCiwceNGtGjRAiNHjsRbb72FdevWZWnbsGFDNG/eHNHR0fj5558l5zZ9+nR06dIFX3zxBfr37w8A8PPzQ+fOnTFlypRs+9nb2yMgIACLFy/OMm/QoEHYvn07UlNTAQBpaWm4cOECevToYTRWrVq19COAtWvXNpjn5uaG9evXY/z48WjWrBnee+89qFSqLKOpu3btwqhRo7B+/XqMHDkSDg4OBvPVajV69OgBjUaDX3/9FUqlMkseEydORLVq1fDNN99ku9w5uXjxImJjYxEaGoqHDx/mKgYRFQ8sAIlIP/KXORL4MpmFhKWlpf6WMtu2bUNkZGSWtp07d8bPP/+MhQsX4tNPP8XNmzcl59evXz8AwNWrV/XTJkyYgF27duHcuXPZ9luwYIHRQ84DBw7E48eP8fvvvwPQXeWrVqvRqVMno3FyGgFs0aIFSpcujQ8//BB16tTRnx+YnJxs0M7b2xtjxozJNtdRo0bh8uXLiIqKKrCbU8+cOROtW7dGyZIljRbGRGQ+WAASkf5Qqo+Pj8l9GjVqhPPnzxu8Mguq9PR03Lhxw6B99+7dIYTAv//+Kyk3tVqNoKAgvPvuuzh69ChWrVoFQHfRx2effQYXFxdJ8QCgfPnyqFevHvbu3QsAOH78OFxdXbNd/lq1auHff//F1atXsxSAn376KQICAmBra4vPPvssy3Jn8vPzy/Y+hYBuFDY0NBQ1a9bE559/brTNmjVrIITA3LlzTVlMA5cuXcKOHTswadIkjBo1CkuWLOFTUIjMGAtAIsLKlSthbW2tv9r2ZXx9fRETE4OaNWuibt26qFu3Lv7991/88MMPAIATJ06gRo0aBqN9mffZq1y5sqTcxo4dC61Wi2XLlmHevHkYO3YsoqOjAQCzZs2Cu7u7pHiZ2rVrh3379gHQXezSrl27bNtWqVIFtra2+gtCnrdixQoEBQVhwYIFePvtt3NdVC1ZsgRly5bFvHnzEBwcbHDvwUx3797FlStXEBsbKzn+rFmz4Ovri3bt2uGDDz5ARkYGli5dmqtciej1xwKQyExFRETg4MGDGDx4MDZv3oyvv/7a5EPAn3zyCdRqNfr164dDhw5h48aN+Oijj/QjXP7+/qhVqxY6deqEHTt2YOfOnfjwww/RrVu3LAVUdoQQGD16NDZs2IBff/0VNjY2GDFiBGrWrJnjM39zkp6ern8ayYcffogjR44gLS0Nhw8fRps2bQzaPX8Frlwuh7e3N3x8fLKM4jk7O+OPP/7AsWPHsHLlSn0cqU89yTznr2XLlmjfvj2CgoKytJk8eTJq1qyJBQsWSIp97do1bNmyBePGjQMAODg44L333sO3336b5VA1EZkHFoBEZmrgwIHo0aMH/vvvP2zfvh2ffPKJyX2dnZ1x6NAhqFQqdO3aFePHj8d7772H+fPnAwAUCgV+++031KpVC8OGDcOHH36I7t27S3oKyBdffIHg4GDs2rVLf2hWLpdj69atmD17tr7d9evXcfz4cdy4cUN/r78XaTQaCCEQHBwMpVIJmUyGSpUqoUqVKrCyssKTJ08wePBg/fmMlpaWWR6RVqtWrSyHfwFg7dq1SE1NRadOnbB06VLMnTsXzs7OOHHihMnL+qK5c+ciJCQEO3fuzHWM582ePRtlypTRX0QDAGPGjEFCQgJ+/PHHfPkMInq9yISpl/0REb1CycnJuHLlyktvVzJs2DCsXr0avr6+2LFjB6pUqZKlTePGjdGpUycEBgbi/v37sLS0zDaeEAKpqamoWbOmwePkiIiKExaARPRai42NhRACZcqUybZNzZo10aNHD8yZM+cVZkZEVHSxACQiIiIyMzwHkIiIiMjMsAAkIiIiMjMsAImIiIjMDAtAIiIiIjPDApCIiIjIzLAAJCIiIjIzLACJiIiIzAwLQCIiIiIzwwKQiIiIyMywACQiIiIyMywAiYi
" </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-Die3</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.107338</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.190710</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.447250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.236563</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.129432</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-0.027715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.496654</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.943904</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.572129</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die3\n",
"count 87.000000\n",
"mean -0.107338\n",
"std 0.190710\n",
"min -0.447250\n",
"25% -0.236563\n",
"50% -0.129432\n",
"75% -0.027715\n",
"max 0.496654\n",
"range 0.943904\n",
"3sigma 0.572129"
]
},
"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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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": "c3cb6cc27ea245acb3b19779c2280d32",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsJ0lEQVR4nO3dd1hTZxsG8DuLKTLEAYiAEwRxYi114ayzVnBXrdW2rjqoWK1arfZztEqxrtZqRWtdte5Zq+Koqw5QHBUtwz0QA8pOzvdHJBJJIAEiSO7fdeWCnPGc9+SE4+17lkgQBAFEREREZDLEJd0AIiIiInq9GACJiIiITAwDIBEREZGJYQAkIiIiMjEMgEREREQmhgGQiIiIyMQwABIRERGZGAZAIiIiIhPDAEhEZUL37t2xdOlSneNTUlK0Dk9OTjZWk4iISi0GQCIqE2JiYnD//n2t4x4/fgxXV1csXrxYY/jQoUPRrVu319E8IqJShQGQyMRERERAJBJBJBKhXLlyaNq0KVauXJnvtIV16NAhDBs2DH379sWSJUuQnZ1t0Pxz587FwoULsXjxYvVr+fLlWqe1traGWKx9l7Zr1y7I5XLUr19fY/igQYNw9OhRbNy4Uet8M2bMgEgkwpgxY9TDRo8eDZFIhBkzZhi0LvkRiUSIiIgotnqvGjVqFFxdXTU+/9TUVDg4OBTrehDRm4MBkMhE/fbbb/jjjz9Qs2ZNDBs2TGsQaNy4Mf75559C1V+/fj26du0KMzMzuLq64ssvv8SgQYMMqnHx4kVERUUhMjISkZGRWL9+PRYvXoy0tDSdYTIrKwvp6ekaw1asWIE6deqgRYsWuHLlCqKjo3Ht2jVUrlwZAwYMgFgsxrVr13Dt2jVcuXIF//33n8b8UVFRGm1600yYMAH37t3D5s2b1cNWr16NjIwMjB49ugRbRkQlRiAik3L48GEBgHDhwgX1sPfff1+QyWTCgwcPimUZaWlpgqOjoxAeHq4etnbtWkEkEglPnjwpdN3g4GBhwIABQqtWrQQAOl99+vRRz3Pu3DkBgDBx4kRBEAShUaNGgpWVlWBra6v1ZWNjIwQGBgqCIAjTp08XAAh2dnbqera2tgIAYfr06YVej1cBEA4fPlxs9bTp27ev8NZbbwmCIAhKpVLw9PQURo0aZdRlElHpJS2Z2ElEpcmnn36KrVu3Yt++fQb30mmTlpaGuXPn4oMPPlAPc3Z2hiAIyMzM1LvOypUr4eTkhM6dOwMAzp8/j549e2LevHmQyWSwsrJST9uyZUu8++67CAkJ0ThsPXPmTACAjY0NAODcuXMGrUvTpk1x9uxZJCQkQBAEpKSkwM/Pz6AapcEXX3yBhg0b4uTJk0hKSkJMTAz27NlT0s0iohLCQ8BEpD437urVqxrD8zsHMDIyEm3atIGlpSWqV6+OsLAw9Th7e3sMHToUEokEAJCRkYGwsDC88847qFy5st7tSkxMRK9evXD69GmkpKTgxIkTaNmyJZycnBAdHY1y5cqpX2KxGGZmZrC3t4ednR0A1TmI27dvV78HgOzsbMyaNQsnTpzQWNbo0aPRpEkTPH36VGO4paUlatasqT4cXb16dY3gCQDff/+9eniDBg3w119/aYz/8MMP8eGHH+Lu3bsYMGAAHB0dcfPmTa3r/ODBA9SoUQN9+vSBUqnU+7MqSIMGDdChQweEhYUhLCwMvXr1goeHR7HVJ6I3C3sAiQgODg4AgKSkJL2mT0xMRNu2bREQEIB9+/bh0qVLGDduHGxsbDB06FCNaWfOnIkVK1bAwsLC4AsdJk6ciNTUVHTt2hVjxoyBo6Mj6tevj3/++Qft27dHZGQk6tWrp3XelJQUDBkyBH369NG4OlgqlWLz5s24efMm/P391cPPnDkDCwsLjbCYo169eoiKioIgCKhXrx6ePHmiHrdu3ToEBwfju+++Q7NmzbBhwwYEBQXh1q1b6l5HAHjy5An8/f3RvHlzzJgxA46OjnmWk5ycjE6dOqFOnTpYu3ZtnotaHj58iOTkZNjb26NChQp6f445vvjiC7Rv3x6CIBjcE0pEZQt7AIlI3csnCIJe0y9atAgSiQTr169Hq1atMHr0aLz33ntYs2ZNnmmbNGmCFi1aIC4uDr/99pvBbZsxYwa6dOmCr776Cv369QMA+Pn5oXPnzpgyZYrO+WxsbBAUFISFCxfmGTdw4EBs3bpVfbFIZmYmLl68iB49emitVa9ePXUPoK+vr8Y4FxcXrF27FhMmTEDz5s0xbNgwyOXyPL2pO3fuxJgxY7B27VqMHj0atra2GuMzMjLQo0cPKBQK/PHHH5DJZHnaMXHiRNSqVQvfffedzvXOT5s2beDl5QV/f380bNiwUDWIqGxgACQidc9fTk9gQS5duoRHjx7BzMxMfUuZLVu2ICYmJs+0nTt3xm+//YbQ0FB88cUXuHXrlsHt69u3LwDg+vXr6mEhISHYuXMnzp8/r3O+BQsWaD3kPGDAADx79gx//vknANVVvhkZGejUqZPWOjk9gBcvXszT49iqVStUqFABI0aMQP369dXnB6ampmpMV7duXYwbN05nW8eMGYOrV68iNjbWqDendnR01Nr7SESmhQGQiHDp0iUAgLe3t97zNG3aFBcuXNB45QSqrKwsxMfHa0zfvXt3CIKAf//916C2ZWRkIDg4GB9++CGOHDmCFStWAFBd9PHll1+iYsWKBtUDACcnJzRs2FB9EcSxY8fg7Oysc/3r1auHf//9F9evX88TAL/44gsEBQXBysoKX375ZZ71zuHn56fzPoWAqhc2MjISXl5emDZtmtZpwsPDIQgC5s6dq89qEhHpxABIRPj5559hYWGhvtq2ID4+PkhISICXlxcaNGiABg0a4N9//8WPP/4IADh+/Djq1Kmj0dt37do1AIC7u7tBbRs/fjyUSiWWLl2KefPmYfz48YiLiwMA/O9//4Orq6tB9XK0b98ee/fuBaC62KV9+/Y6p61RowasrKzUF4Tktnz5cgQHB2PBggXo06dPoXvvFi1ahMqVK2PevHlYuXKlxr0Hc9y7dw/Xrl3Do0ePCrUMIqIcDIBEJurKlSs4cOAABg0ahI0bN+Lbb7/V+xDwZ599hoyMDPTt2xcHDx7E+vXrMXLkSHUPV8uWLVGvXj106tQJ27Ztw/bt2zFixAh069YtT4DSRRAEjB07FuvWrcMff/wBS0tLfPLJJ/Dy8sr3mb/5ycrKUt9AesSIETh8+DAyMzNx6NAhtG3bVmO63FfgisVi1K1bF97e3nl68RwdHfHXX3/h6NGj+Pnnn9V1DH3qSc45f61bt0aHDh0QHBycZ5rJkyfDy8sLCxYsMKg2EdGrGACJTNSAAQPQo0cP/Pfff9i6dSs+++wzved1dHTEwYMHIZfL0bVrV0yYMAHDhg3D/PnzAQASiQQ7duxAvXr18NFHH2HEiBHo3r071q1bp/cyvvrqK6xcuRI7d+5UH5oVi8XYvHkzZs+erZ7u5s2bOHbsGOLj4zWuus1NoVBAEASsXLkSMpkMIpEIbm5uqFGjBszNzfH8+XMMGjRIfT6jmZlZnqeB1KtXT+sVx6tXr0Z6ejo6deqEJUuWYO7cuXB0dMTx48f1XtdXzZ07FxEREdi+fXuhaxAR5Uck6HvZHxHRa5Samopr166hUaNG+U730UcfYdWqVfDx8cG2bdtQo0aNPNM0a9YMnTp1wvDhw/HgwQOYmZnprCcIAtLT0+Hl5QULC4sirwcRUWnEAEhEb7RHjx5BEARUqlRJ5zReXl7o0aMH5syZ8xpbRkRUejEAEhEREZkYngNIREREZGIYAImIiIhMDAMgERERkYlhACQiIiIyMQyARERERCaGAZCIiIjIxDAAEhEREZkYBkAiIiIiE8MASERERGRiGACJiIiITAwDIBEREZGJYQAkIiIiMjEMgEREREQmhgGQiIiIyMQwABIRERGZGAZAIiIiIhPDAEhERERkYhgAiYiIiEwMAyARERGRiWEAJCIiIjIxDIBERCUkPT0d69evL+lmEJEJYgAkIioCQRBQr1499OvXT2P4qVOnIBKJEBE
"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(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-Die3</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.001038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.001801</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.004038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.000252</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.000843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.001593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.012133</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.016171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.005403</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 11.22.1-Die3\n",
"count 87.000000\n",
"mean 0.001038\n",
"std 0.001801\n",
"min -0.004038\n",
"25% 0.000252\n",
"50% 0.000843\n",
"75% 0.001593\n",
"max 0.012133\n",
"range 0.016171\n",
"3sigma 0.005403"
]
},
"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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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_35936\\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": "6e86603418f841b494fc21a2c50d2e55",
"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": "7b6651ce-0935-4386-b6a4-634fd78aaee3",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a2447eb1fe704e2894f53c2a32917590",
"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",
"Mean_TX=BC_X.stack().mean()\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",
"ax[0].axhline(Mean_TX,c='orange',ls='-.',label=r'Mean_TX: ${:.4f}±0.3um$'.format(Mean_TX))\n",
"ax[0].axhline(Mean_TX+0.3,c='green',ls='-.')\n",
"ax[0].axhline(Mean_TX-0.3,c='green',ls='-.')\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",
"Mean_TY=BC_Y.stack().mean()\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",
"ax[1].axhline(Mean_TY,c='orange',ls='-.',label=r'Mean_TY: ${:.4f}±0.3um$'.format(Mean_TY))\n",
"ax[1].axhline(Mean_TY+0.3,c='green',ls='-.')\n",
"ax[1].axhline(Mean_TY-0.3,c='green',ls='-.')\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",
"ax[2].grid()\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4339b8ea-4849-4cec-bbd9-5740e291a6b9",
"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": "37f937b4-81bc-4d09-bc83-1bfbd88d90a5",
"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": "68021b00",
"metadata": {},
"outputs": [],
"source": [
"# (((6168.837 + 5661.545)/2)**2 + ((6180.804-6166.118)/2)**2)**0.5\n",
"# 5915.195557725036"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f2ae7ed6-c025-4390-8bd1-4e3b82783c36",
"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.233479</td>\n",
" <td>-0.354915</td>\n",
" <td>0.002455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.186469</td>\n",
" <td>-0.227927</td>\n",
" <td>0.000424</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.109499</td>\n",
" <td>0.021220</td>\n",
" <td>0.000769</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.137159</td>\n",
" <td>-0.217839</td>\n",
" <td>0.001510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>-0.092448</td>\n",
" <td>-0.251001</td>\n",
" <td>0.000418</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>-0.009481</td>\n",
" <td>-0.318712</td>\n",
" <td>0.002354</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>-0.070788</td>\n",
" <td>-0.129432</td>\n",
" <td>0.001395</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.340314</td>\n",
" <td>-0.246095</td>\n",
" <td>-0.000960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>-0.061146</td>\n",
" <td>-0.065091</td>\n",
" <td>0.000512</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>-0.084710</td>\n",
" <td>-0.079661</td>\n",
" <td>0.000257</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>-0.342569</td>\n",
" <td>-0.262522</td>\n",
" <td>-0.001208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>-0.255296</td>\n",
" <td>-0.205191</td>\n",
" <td>-0.000915</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>-0.221284</td>\n",
" <td>-0.381134</td>\n",
" <td>0.001574</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>-0.454367</td>\n",
" <td>-0.361172</td>\n",
" <td>0.000474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>-0.324609</td>\n",
" <td>-0.022145</td>\n",
" <td>-0.000091</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.139194</td>\n",
" <td>0.226432</td>\n",
" <td>-0.000688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>-0.135808</td>\n",
" <td>-0.075642</td>\n",
" <td>-0.000335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>-0.039379</td>\n",
" <td>-0.106397</td>\n",
" <td>0.000111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.157486</td>\n",
" <td>-0.048065</td>\n",
" <td>0.000036</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.088477</td>\n",
" <td>0.168149</td>\n",
" <td>-0.000402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.034133</td>\n",
" <td>-0.217855</td>\n",
" <td>0.002084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.056334</td>\n",
" <td>-0.083403</td>\n",
" <td>0.001938</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>-0.423291</td>\n",
" <td>-0.255241</td>\n",
" <td>0.002383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>-0.100407</td>\n",
" <td>0.088802</td>\n",
" <td>0.000124</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>-0.023003</td>\n",
" <td>-0.047427</td>\n",
" <td>0.002613</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>-0.040004</td>\n",
" <td>-0.040291</td>\n",
" <td>0.000764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>-0.136813</td>\n",
" <td>-0.164289</td>\n",
" <td>0.000042</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>-0.330091</td>\n",
" <td>-0.201463</td>\n",
" <td>0.000404</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>-0.259123</td>\n",
" <td>-0.251336</td>\n",
" <td>-0.000436</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>-0.230634</td>\n",
" <td>-0.167496</td>\n",
" <td>0.002066</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>-0.085455</td>\n",
" <td>-0.248863</td>\n",
" <td>0.000247</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>-0.101633</td>\n",
" <td>-0.429064</td>\n",
" <td>0.001455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>-0.333951</td>\n",
" <td>-0.196183</td>\n",
" <td>0.001487</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>-0.279520</td>\n",
" <td>-0.033285</td>\n",
" <td>0.001087</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.086021</td>\n",
" <td>-0.084175</td>\n",
" <td>0.002097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.149899</td>\n",
" <td>0.166146</td>\n",
" <td>0.001472</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.093940</td>\n",
" <td>-0.178318</td>\n",
" <td>0.002928</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>-0.017069</td>\n",
" <td>-0.278396</td>\n",
" <td>0.000303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.055873</td>\n",
" <td>0.484107</td>\n",
" <td>-0.000216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.148927</td>\n",
" <td>0.091712</td>\n",
" <td>0.000843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.049580</td>\n",
" <td>0.123758</td>\n",
" <td>-0.004038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>-0.106986</td>\n",
" <td>-0.157220</td>\n",
" <td>-0.002094</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.217666</td>\n",
" <td>0.294797</td>\n",
" <td>0.001976</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>-0.198630</td>\n",
" <td>-0.213640</td>\n",
" <td>0.001081</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>-0.199427</td>\n",
" <td>-0.301866</td>\n",
" <td>0.001360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>-0.112350</td>\n",
" <td>-0.440817</td>\n",
" <td>0.002722</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.076316</td>\n",
" <td>-0.103135</td>\n",
" <td>0.001101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.042743</td>\n",
" <td>-0.304131</td>\n",
" <td>0.002813</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>-0.106910</td>\n",
" <td>-0.191837</td>\n",
" <td>0.001026</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>-0.226404</td>\n",
" <td>-0.310554</td>\n",
" <td>0.000734</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>0.115326</td>\n",
" <td>-0.182982</td>\n",
" <td>0.012133</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>-0.396895</td>\n",
" <td>-0.117820</td>\n",
" <td>-0.000184</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0.034441</td>\n",
" <td>-0.134086</td>\n",
" <td>0.002456</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>-0.162653</td>\n",
" <td>-0.229690</td>\n",
" <td>0.001566</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>-0.191809</td>\n",
" <td>-0.212616</td>\n",
" <td>0.000854</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>-0.255541</td>\n",
" <td>-0.217828</td>\n",
" <td>0.001612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.027543</td>\n",
" <td>-0.208159</td>\n",
" <td>0.002358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.127832</td>\n",
" <td>-0.046123</td>\n",
" <td>0.002779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>-0.010232</td>\n",
" <td>-0.177311</td>\n",
" <td>0.002018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.110965</td>\n",
" <td>-0.258046</td>\n",
" <td>0.001000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>-0.142207</td>\n",
" <td>-0.182026</td>\n",
" <td>0.000904</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.105894</td>\n",
" <td>0.027383</td>\n",
" <td>0.000488</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.300265</td>\n",
" <td>0.137702</td>\n",
" <td>0.000801</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>0.385866</td>\n",
" <td>0.496654</td>\n",
" <td>0.007311</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>-0.342239</td>\n",
" <td>-0.447250</td>\n",
" <td>0.000283</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>-0.074574</td>\n",
" <td>-0.243436</td>\n",
" <td>-0.000596</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>-0.066986</td>\n",
" <td>-0.034661</td>\n",
" <td>0.001547</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>-0.047406</td>\n",
" <td>-0.055631</td>\n",
" <td>0.000729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.087549</td>\n",
" <td>-0.104530</td>\n",
" <td>0.001049</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>-0.135962</td>\n",
" <td>-0.333061</td>\n",
" <td>0.001730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>-0.153461</td>\n",
" <td>-0.274151</td>\n",
" <td>0.000667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>0.164209</td>\n",
" <td>-0.177328</td>\n",
" <td>0.001425</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>0.066001</td>\n",
" <td>0.004429</td>\n",
" <td>0.000117</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>-0.037105</td>\n",
" <td>0.078947</td>\n",
" <td>0.001076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>-0.082053</td>\n",
" <td>-0.043741</td>\n",
" <td>0.001764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>0.279058</td>\n",
" <td>0.262016</td>\n",
" <td>0.000558</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>0.269899</td>\n",
" <td>0.235145</td>\n",
" <td>0.000099</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>0.046920</td>\n",
" <td>-0.011659</td>\n",
" <td>0.000796</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>0.089404</td>\n",
" <td>-0.088164</td>\n",
" <td>0.001324</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>0.171336</td>\n",
" <td>-0.115076</td>\n",
" <td>0.000905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>-0.124288</td>\n",
" <td>0.146530</td>\n",
" <td>-0.001074</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>-0.450377</td>\n",
" <td>0.032724</td>\n",
" <td>-0.000247</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>0.089331</td>\n",
" <td>0.031687</td>\n",
" <td>0.000468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>0.034563</td>\n",
" <td>-0.078437</td>\n",
" <td>0.001692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>0.089082</td>\n",
" <td>-0.039721</td>\n",
" <td>0.000816</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>0.257582</td>\n",
" <td>-0.378255</td>\n",
" <td>0.000665</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>0.079509</td>\n",
" <td>0.188294</td>\n",
" <td>0.000343</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"Index \n",
"1 -0.233479 -0.354915 0.002455\n",
"2 0.186469 -0.227927 0.000424\n",
"3 -0.109499 0.021220 0.000769\n",
"4 -0.137159 -0.217839 0.001510\n",
"5 -0.092448 -0.251001 0.000418\n",
"6 -0.009481 -0.318712 0.002354\n",
"7 -0.070788 -0.129432 0.001395\n",
"8 0.340314 -0.246095 -0.000960\n",
"9 -0.061146 -0.065091 0.000512\n",
"10 -0.084710 -0.079661 0.000257\n",
"11 -0.342569 -0.262522 -0.001208\n",
"12 -0.255296 -0.205191 -0.000915\n",
"13 -0.221284 -0.381134 0.001574\n",
"14 -0.454367 -0.361172 0.000474\n",
"15 -0.324609 -0.022145 -0.000091\n",
"16 0.139194 0.226432 -0.000688\n",
"17 -0.135808 -0.075642 -0.000335\n",
"18 -0.039379 -0.106397 0.000111\n",
"19 0.157486 -0.048065 0.000036\n",
"20 0.088477 0.168149 -0.000402\n",
"21 0.034133 -0.217855 0.002084\n",
"22 0.056334 -0.083403 0.001938\n",
"23 -0.423291 -0.255241 0.002383\n",
"24 -0.100407 0.088802 0.000124\n",
"25 -0.023003 -0.047427 0.002613\n",
"26 -0.040004 -0.040291 0.000764\n",
"27 -0.136813 -0.164289 0.000042\n",
"28 -0.330091 -0.201463 0.000404\n",
"29 -0.259123 -0.251336 -0.000436\n",
"30 -0.230634 -0.167496 0.002066\n",
"31 -0.085455 -0.248863 0.000247\n",
"32 -0.101633 -0.429064 0.001455\n",
"33 -0.333951 -0.196183 0.001487\n",
"34 -0.279520 -0.033285 0.001087\n",
"35 0.086021 -0.084175 0.002097\n",
"36 0.149899 0.166146 0.001472\n",
"37 0.093940 -0.178318 0.002928\n",
"38 -0.017069 -0.278396 0.000303\n",
"39 0.055873 0.484107 -0.000216\n",
"40 0.148927 0.091712 0.000843\n",
"41 0.049580 0.123758 -0.004038\n",
"42 -0.106986 -0.157220 -0.002094\n",
"43 0.217666 0.294797 0.001976\n",
"44 -0.198630 -0.213640 0.001081\n",
"45 -0.199427 -0.301866 0.001360\n",
"46 -0.112350 -0.440817 0.002722\n",
"47 0.076316 -0.103135 0.001101\n",
"48 0.042743 -0.304131 0.002813\n",
"49 -0.106910 -0.191837 0.001026\n",
"50 -0.226404 -0.310554 0.000734\n",
"51 0.115326 -0.182982 0.012133\n",
"52 -0.396895 -0.117820 -0.000184\n",
"53 0.034441 -0.134086 0.002456\n",
"54 -0.162653 -0.229690 0.001566\n",
"55 -0.191809 -0.212616 0.000854\n",
"56 -0.255541 -0.217828 0.001612\n",
"57 0.027543 -0.208159 0.002358\n",
"58 0.127832 -0.046123 0.002779\n",
"59 -0.010232 -0.177311 0.002018\n",
"60 0.110965 -0.258046 0.001000\n",
"61 -0.142207 -0.182026 0.000904\n",
"62 0.105894 0.027383 0.000488\n",
"63 0.300265 0.137702 0.000801\n",
"64 0.385866 0.496654 0.007311\n",
"65 -0.342239 -0.447250 0.000283\n",
"66 -0.074574 -0.243436 -0.000596\n",
"67 -0.066986 -0.034661 0.001547\n",
"68 -0.047406 -0.055631 0.000729\n",
"69 0.087549 -0.104530 0.001049\n",
"70 -0.135962 -0.333061 0.001730\n",
"71 -0.153461 -0.274151 0.000667\n",
"72 0.164209 -0.177328 0.001425\n",
"73 0.066001 0.004429 0.000117\n",
"74 -0.037105 0.078947 0.001076\n",
"75 -0.082053 -0.043741 0.001764\n",
"76 0.279058 0.262016 0.000558\n",
"77 0.269899 0.235145 0.000099\n",
"78 0.046920 -0.011659 0.000796\n",
"79 0.089404 -0.088164 0.001324\n",
"80 0.171336 -0.115076 0.000905\n",
"81 -0.124288 0.146530 -0.001074\n",
"82 -0.450377 0.032724 -0.000247\n",
"83 0.089331 0.031687 0.000468\n",
"84 0.034563 -0.078437 0.001692\n",
"85 0.089082 -0.039721 0.000816\n",
"86 0.257582 -0.378255 0.000665\n",
"87 0.079509 0.188294 0.000343"
]
},
"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'] - 5915.1956 * np.sin(DieBC['Angle']*np.pi/180)\n",
"DieBC"
]
},
{
"cell_type": "markdown",
"id": "a107d1cf",
"metadata": {},
"source": [
"# 计算补偿值"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "5584247f",
"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.233479</td>\n",
" <td>-0.354915</td>\n",
" <td>0.002455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.186469</td>\n",
" <td>-0.227927</td>\n",
" <td>0.000424</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.109499</td>\n",
" <td>0.021220</td>\n",
" <td>0.000769</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.137159</td>\n",
" <td>-0.217839</td>\n",
" <td>0.001510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>-0.092448</td>\n",
" <td>-0.251001</td>\n",
" <td>0.000418</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>-0.009481</td>\n",
" <td>-0.318712</td>\n",
" <td>0.002354</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>-0.070788</td>\n",
" <td>-0.129432</td>\n",
" <td>0.001395</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.340314</td>\n",
" <td>-0.246095</td>\n",
" <td>-0.000960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>-0.061146</td>\n",
" <td>-0.065091</td>\n",
" <td>0.000512</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>-0.084710</td>\n",
" <td>-0.079661</td>\n",
" <td>0.000257</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>-0.342569</td>\n",
" <td>-0.262522</td>\n",
" <td>-0.001208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>-0.255296</td>\n",
" <td>-0.205191</td>\n",
" <td>-0.000915</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>-0.221284</td>\n",
" <td>-0.381134</td>\n",
" <td>0.001574</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>-0.454367</td>\n",
" <td>-0.361172</td>\n",
" <td>0.000474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>-0.324609</td>\n",
" <td>-0.022145</td>\n",
" <td>-0.000091</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.139194</td>\n",
" <td>0.226432</td>\n",
" <td>-0.000688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>-0.135808</td>\n",
" <td>-0.075642</td>\n",
" <td>-0.000335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>-0.039379</td>\n",
" <td>-0.106397</td>\n",
" <td>0.000111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.157486</td>\n",
" <td>-0.048065</td>\n",
" <td>0.000036</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.088477</td>\n",
" <td>0.168149</td>\n",
" <td>-0.000402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.034133</td>\n",
" <td>-0.217855</td>\n",
" <td>0.002084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.056334</td>\n",
" <td>-0.083403</td>\n",
" <td>0.001938</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>-0.423291</td>\n",
" <td>-0.255241</td>\n",
" <td>0.002383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>-0.100407</td>\n",
" <td>0.088802</td>\n",
" <td>0.000124</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>-0.023003</td>\n",
" <td>-0.047427</td>\n",
" <td>0.002613</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>-0.040004</td>\n",
" <td>-0.040291</td>\n",
" <td>0.000764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>-0.136813</td>\n",
" <td>-0.164289</td>\n",
" <td>0.000042</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>-0.330091</td>\n",
" <td>-0.201463</td>\n",
" <td>0.000404</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>-0.259123</td>\n",
" <td>-0.251336</td>\n",
" <td>-0.000436</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>-0.230634</td>\n",
" <td>-0.167496</td>\n",
" <td>0.002066</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>-0.085455</td>\n",
" <td>-0.248863</td>\n",
" <td>0.000247</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>-0.101633</td>\n",
" <td>-0.429064</td>\n",
" <td>0.001455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>-0.333951</td>\n",
" <td>-0.196183</td>\n",
" <td>0.001487</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>-0.279520</td>\n",
" <td>-0.033285</td>\n",
" <td>0.001087</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.086021</td>\n",
" <td>-0.084175</td>\n",
" <td>0.002097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.149899</td>\n",
" <td>0.166146</td>\n",
" <td>0.001472</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.093940</td>\n",
" <td>-0.178318</td>\n",
" <td>0.002928</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>-0.017069</td>\n",
" <td>-0.278396</td>\n",
" <td>0.000303</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.055873</td>\n",
" <td>0.484107</td>\n",
" <td>-0.000216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.148927</td>\n",
" <td>0.091712</td>\n",
" <td>0.000843</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>-0.106986</td>\n",
" <td>-0.157220</td>\n",
" <td>-0.002094</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.217666</td>\n",
" <td>0.294797</td>\n",
" <td>0.001976</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>-0.198630</td>\n",
" <td>-0.213640</td>\n",
" <td>0.001081</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>-0.199427</td>\n",
" <td>-0.301866</td>\n",
" <td>0.001360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>-0.112350</td>\n",
" <td>-0.440817</td>\n",
" <td>0.002722</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.076316</td>\n",
" <td>-0.103135</td>\n",
" <td>0.001101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.042743</td>\n",
" <td>-0.304131</td>\n",
" <td>0.002813</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>-0.106910</td>\n",
" <td>-0.191837</td>\n",
" <td>0.001026</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>-0.226404</td>\n",
" <td>-0.310554</td>\n",
" <td>0.000734</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>-0.396895</td>\n",
" <td>-0.117820</td>\n",
" <td>-0.000184</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0.034441</td>\n",
" <td>-0.134086</td>\n",
" <td>0.002456</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>-0.162653</td>\n",
" <td>-0.229690</td>\n",
" <td>0.001566</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>-0.191809</td>\n",
" <td>-0.212616</td>\n",
" <td>0.000854</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>-0.255541</td>\n",
" <td>-0.217828</td>\n",
" <td>0.001612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.027543</td>\n",
" <td>-0.208159</td>\n",
" <td>0.002358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.127832</td>\n",
" <td>-0.046123</td>\n",
" <td>0.002779</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>-0.010232</td>\n",
" <td>-0.177311</td>\n",
" <td>0.002018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.110965</td>\n",
" <td>-0.258046</td>\n",
" <td>0.001000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>-0.142207</td>\n",
" <td>-0.182026</td>\n",
" <td>0.000904</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.105894</td>\n",
" <td>0.027383</td>\n",
" <td>0.000488</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.300265</td>\n",
" <td>0.137702</td>\n",
" <td>0.000801</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>-0.342239</td>\n",
" <td>-0.447250</td>\n",
" <td>0.000283</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>-0.074574</td>\n",
" <td>-0.243436</td>\n",
" <td>-0.000596</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>-0.066986</td>\n",
" <td>-0.034661</td>\n",
" <td>0.001547</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>-0.047406</td>\n",
" <td>-0.055631</td>\n",
" <td>0.000729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.087549</td>\n",
" <td>-0.104530</td>\n",
" <td>0.001049</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>-0.135962</td>\n",
" <td>-0.333061</td>\n",
" <td>0.001730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>-0.153461</td>\n",
" <td>-0.274151</td>\n",
" <td>0.000667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>0.164209</td>\n",
" <td>-0.177328</td>\n",
" <td>0.001425</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>0.066001</td>\n",
" <td>0.004429</td>\n",
" <td>0.000117</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>-0.037105</td>\n",
" <td>0.078947</td>\n",
" <td>0.001076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>-0.082053</td>\n",
" <td>-0.043741</td>\n",
" <td>0.001764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>0.279058</td>\n",
" <td>0.262016</td>\n",
" <td>0.000558</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>0.269899</td>\n",
" <td>0.235145</td>\n",
" <td>0.000099</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>0.046920</td>\n",
" <td>-0.011659</td>\n",
" <td>0.000796</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>0.089404</td>\n",
" <td>-0.088164</td>\n",
" <td>0.001324</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>0.171336</td>\n",
" <td>-0.115076</td>\n",
" <td>0.000905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>-0.124288</td>\n",
" <td>0.146530</td>\n",
" <td>-0.001074</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>-0.450377</td>\n",
" <td>0.032724</td>\n",
" <td>-0.000247</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>0.089331</td>\n",
" <td>0.031687</td>\n",
" <td>0.000468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>0.034563</td>\n",
" <td>-0.078437</td>\n",
" <td>0.001692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>0.089082</td>\n",
" <td>-0.039721</td>\n",
" <td>0.000816</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>0.257582</td>\n",
" <td>-0.378255</td>\n",
" <td>0.000665</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>0.079509</td>\n",
" <td>0.188294</td>\n",
" <td>0.000343</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"Index \n",
"1 -0.233479 -0.354915 0.002455\n",
"2 0.186469 -0.227927 0.000424\n",
"3 -0.109499 0.021220 0.000769\n",
"4 -0.137159 -0.217839 0.001510\n",
"5 -0.092448 -0.251001 0.000418\n",
"6 -0.009481 -0.318712 0.002354\n",
"7 -0.070788 -0.129432 0.001395\n",
"8 0.340314 -0.246095 -0.000960\n",
"9 -0.061146 -0.065091 0.000512\n",
"10 -0.084710 -0.079661 0.000257\n",
"11 -0.342569 -0.262522 -0.001208\n",
"12 -0.255296 -0.205191 -0.000915\n",
"13 -0.221284 -0.381134 0.001574\n",
"14 -0.454367 -0.361172 0.000474\n",
"15 -0.324609 -0.022145 -0.000091\n",
"16 0.139194 0.226432 -0.000688\n",
"17 -0.135808 -0.075642 -0.000335\n",
"18 -0.039379 -0.106397 0.000111\n",
"19 0.157486 -0.048065 0.000036\n",
"20 0.088477 0.168149 -0.000402\n",
"21 0.034133 -0.217855 0.002084\n",
"22 0.056334 -0.083403 0.001938\n",
"23 -0.423291 -0.255241 0.002383\n",
"24 -0.100407 0.088802 0.000124\n",
"25 -0.023003 -0.047427 0.002613\n",
"26 -0.040004 -0.040291 0.000764\n",
"27 -0.136813 -0.164289 0.000042\n",
"28 -0.330091 -0.201463 0.000404\n",
"29 -0.259123 -0.251336 -0.000436\n",
"30 -0.230634 -0.167496 0.002066\n",
"31 -0.085455 -0.248863 0.000247\n",
"32 -0.101633 -0.429064 0.001455\n",
"33 -0.333951 -0.196183 0.001487\n",
"34 -0.279520 -0.033285 0.001087\n",
"35 0.086021 -0.084175 0.002097\n",
"36 0.149899 0.166146 0.001472\n",
"37 0.093940 -0.178318 0.002928\n",
"38 -0.017069 -0.278396 0.000303\n",
"39 0.055873 0.484107 -0.000216\n",
"40 0.148927 0.091712 0.000843\n",
"41 NaN NaN NaN\n",
"42 -0.106986 -0.157220 -0.002094\n",
"43 0.217666 0.294797 0.001976\n",
"44 -0.198630 -0.213640 0.001081\n",
"45 -0.199427 -0.301866 0.001360\n",
"46 -0.112350 -0.440817 0.002722\n",
"47 0.076316 -0.103135 0.001101\n",
"48 0.042743 -0.304131 0.002813\n",
"49 -0.106910 -0.191837 0.001026\n",
"50 -0.226404 -0.310554 0.000734\n",
"51 NaN NaN NaN\n",
"52 -0.396895 -0.117820 -0.000184\n",
"53 0.034441 -0.134086 0.002456\n",
"54 -0.162653 -0.229690 0.001566\n",
"55 -0.191809 -0.212616 0.000854\n",
"56 -0.255541 -0.217828 0.001612\n",
"57 0.027543 -0.208159 0.002358\n",
"58 0.127832 -0.046123 0.002779\n",
"59 -0.010232 -0.177311 0.002018\n",
"60 0.110965 -0.258046 0.001000\n",
"61 -0.142207 -0.182026 0.000904\n",
"62 0.105894 0.027383 0.000488\n",
"63 0.300265 0.137702 0.000801\n",
"64 NaN NaN NaN\n",
"65 -0.342239 -0.447250 0.000283\n",
"66 -0.074574 -0.243436 -0.000596\n",
"67 -0.066986 -0.034661 0.001547\n",
"68 -0.047406 -0.055631 0.000729\n",
"69 0.087549 -0.104530 0.001049\n",
"70 -0.135962 -0.333061 0.001730\n",
"71 -0.153461 -0.274151 0.000667\n",
"72 0.164209 -0.177328 0.001425\n",
"73 0.066001 0.004429 0.000117\n",
"74 -0.037105 0.078947 0.001076\n",
"75 -0.082053 -0.043741 0.001764\n",
"76 0.279058 0.262016 0.000558\n",
"77 0.269899 0.235145 0.000099\n",
"78 0.046920 -0.011659 0.000796\n",
"79 0.089404 -0.088164 0.001324\n",
"80 0.171336 -0.115076 0.000905\n",
"81 -0.124288 0.146530 -0.001074\n",
"82 -0.450377 0.032724 -0.000247\n",
"83 0.089331 0.031687 0.000468\n",
"84 0.034563 -0.078437 0.001692\n",
"85 0.089082 -0.039721 0.000816\n",
"86 0.257582 -0.378255 0.000665\n",
"87 0.079509 0.188294 0.000343"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"StartIndex = 1\n",
"EndIndex = None\n",
"error_list = [41,51,64]\n",
"DieBC.loc[error_list,:] = np.nan\n",
"DieBC.loc[StartIndex:EndIndex,:]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "2ebcbbc7",
"metadata": {},
"outputs": [],
"source": [
"# error_list = [11]\n",
"# DieBC.loc[error_list,:] = np.nan\n",
"# DieBC.loc[StartIndex:EndIndex,:]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "94ecaf78-98bb-45a4-b66f-d36519a42cd5",
"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>84.000000</td>\n",
" <td>84.000000</td>\n",
" <td>84.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.050623</td>\n",
" <td>-0.116379</td>\n",
" <td>0.000891</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.182093</td>\n",
" <td>0.180262</td>\n",
" <td>0.001035</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.454367</td>\n",
" <td>-0.447250</td>\n",
" <td>-0.002094</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.155759</td>\n",
" <td>-0.244101</td>\n",
" <td>0.000255</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.054276</td>\n",
" <td>-0.131759</td>\n",
" <td>0.000830</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.087781</td>\n",
" <td>-0.034317</td>\n",
" <td>0.001568</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.340314</td>\n",
" <td>0.484107</td>\n",
" <td>0.002928</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.794681</td>\n",
" <td>0.931357</td>\n",
" <td>0.005022</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.546279</td>\n",
" <td>0.540786</td>\n",
" <td>0.003106</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" TX TY Angle\n",
"count 84.000000 84.000000 84.000000\n",
"mean -0.050623 -0.116379 0.000891\n",
"std 0.182093 0.180262 0.001035\n",
"min -0.454367 -0.447250 -0.002094\n",
"25% -0.155759 -0.244101 0.000255\n",
"50% -0.054276 -0.131759 0.000830\n",
"75% 0.087781 -0.034317 0.001568\n",
"max 0.340314 0.484107 0.002928\n",
"range 0.794681 0.931357 0.005022\n",
"3sigma 0.546279 0.540786 0.003106"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"describe_3s(DieBC.loc[StartIndex:EndIndex,:])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "21da49b6-3576-4468-8c86-070e51ac0bce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"全局补偿X: 0.0506\n",
"全局补偿Y: 0.1164\n",
"全局补偿角度: -0.000891\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": "74f58c23",
"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+lS5ciMjKyXPmyBHpubq4QrydPnsQll1yC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
"_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
}