Files
ZKFC_ACC/000补偿值计算/.ipynb_checkpoints/Wafer数据计算-Mysql-2025-0107-checkpoint.ipynb

2835 lines
2.0 MiB
Plaintext
Raw Normal View History

2025-11-23 20:43:12 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"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": 8,
"id": "b8010ce0-ccf0-4eb3-beb6-1ff53b735d08",
"metadata": {},
"outputs": [],
"source": [
"from sqlalchemy import create_engine\n",
"import pymysql\n",
"from urllib.parse import quote_plus\n",
"pymysql.install_as_MySQLdb()\n",
"\n",
"# def data_connect():\n",
"# db_username = 'root'\n",
"# db_password = 'Akirin@2024'\n",
"# db_host = 'dataset.totoro.studio'\n",
"# db_port = '13306'\n",
"# db_name = 'qxu0515_acc'\n",
"# encoded_password = quote_plus(db_password)\n",
"# db_connection_str = f'mysql+mysqldb://{db_username}:{encoded_password}@{db_host}:{db_port}/{db_name}'\n",
"# db_connection = create_engine(db_connection_str)\n",
"# return db_connection\n",
"\n",
"def data_connect():\n",
" db_username = 'ydd'\n",
" db_password = '123456'\n",
" db_host = '123.60.59.245'\n",
" db_port = '3306'\n",
" db_name = 'qxu0515_acc'\n",
" encoded_password = quote_plus(db_password)\n",
" db_connection_str = f'mysql+mysqldb://{db_username}:{encoded_password}@{db_host}:{db_port}/{db_name}'\n",
" db_connection = create_engine(db_connection_str)\n",
" return db_connection\n",
" \n",
"def append_dataframe_to_mysql(df, table_name, db_connection):\n",
" \"\"\"\n",
" 将pandas DataFrame追加到MySQL表中。如果数据已经存在停止追加并给出提示。\n",
" \"\"\"\n",
" # 创建数据库连接\n",
" db_connection = db_connection\n",
" # 检查数据是否已存在\n",
" # existing_data = pd.read_sql(f\"SELECT * FROM {table_name}\", db_connection)\n",
" # 使用merge函数合并两个DataFramehow='inner'表示取交集\n",
" # merged_df = pd.merge(df, existing_data, how='inner')\n",
" # if len(merged_df) == len(df):\n",
" # return \"数据已存在于MySQL表中未执行追加操作。\" \n",
" # else:\n",
" # 如果数据不存在,则追加数据\n",
" df.to_sql(table_name, db_connection, if_exists='append', index=False)\n",
" return \"数据已成功追加到MySQL表中。\"\n",
"\n",
"def Data_transform(df1,Data_describe):\n",
" df = pd.DataFrame(df1).copy()\n",
" df.columns = ['Value']\n",
" df = df.reset_index(drop=False)\n",
" df[\"QX8800SP_Index\"] = df[\"QX8800SP_Index\"].astype(int)\n",
" df[\"EVG_Time\"] = Data_describe[\"EVG_Time\"]\n",
" df[\"Die_Type\"] = Data_describe[\"Die_Type\"]\n",
" df[\"Mark_Type\"] = Data_describe[\"Mark_Type\"]\n",
" df[\"Value_Type\"] = Data_describe[\"Value_Type\"]\n",
" df[\"CST_ID\"] = Data_describe[\"CST_ID\"]\n",
" df[\"FOUP_ID\"] = Data_describe[\"FOUP_ID\"] \n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ccb60f92-e657-4732-a679-6ca67bfcf201",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"#读取TotalData\n",
"TotalData1 = pd.read_excel('../Die1AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
"TotalData2 = pd.read_excel('../Die2AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
"TotalData3 = pd.read_excel('../Die3AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
"TotalData4 = pd.read_excel('../Die4AllData.xlsx',sheet_name=None,header=0,index_col = 0)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "73037e6a-e4b8-4bfe-991c-beca9afef783",
"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>Tables_in_qxu0515_acc</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PassRate</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>QX8800SP_2024_12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>QX8800SP_2024_9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>QX8800SP_2025_01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>QX8800SP_AngleCorrect</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>QX8800SP_BondTime</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>QX8800SP_GlassDie</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>QX8800SP_Process_Data</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Top_ZL1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>process_data</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>process_data_mean</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Tables_in_qxu0515_acc\n",
"0 PassRate\n",
"1 QX8800SP_2024_12\n",
"2 QX8800SP_2024_9\n",
"3 QX8800SP_2025_01\n",
"4 QX8800SP_AngleCorrect\n",
"5 QX8800SP_BondTime\n",
"6 QX8800SP_GlassDie\n",
"7 QX8800SP_Process_Data\n",
"8 Top_ZL1\n",
"9 process_data\n",
"10 process_data_mean"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_connection = data_connect()\n",
"df_all = pd.read_sql('SHOW TABLES', db_connection)\n",
"df_all"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2db0d1c6-40f4-4419-b04a-d519afe44a9b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'QX8800SP_2025_01'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table_name = df_all.iloc[3,0]\n",
"table_name"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "b15b48e5-1f2e-4467-8214-0804a5bee1c6",
"metadata": {},
"outputs": [],
"source": [
"# 特别注意参数\n",
"# 倒数第几片、CST_ID、EVG量测时间、FOUP_ID\n",
"wafer_num = -1\n",
"wafer_name = '12.22.2'\n",
"FOUP_ID = \"PFP10192.08\"\n",
"EVG_Time = \"2024-12-23 15:13:50.429\"\n",
"\n",
"# 预设参数\n",
"Die_Type = \"Die1\"\n",
"Mark_Type = \"MarkC\"\n",
"Value_Type = \"X\"\n",
"CST_ID = wafer_name\n",
"\n",
"\n",
"Data_describe = {\n",
" \"EVG_Time\":EVG_Time,\n",
" \"Die_Type\":Die_Type,\n",
" \"Mark_Type\":Mark_Type,\n",
" \"Value_Type\":Value_Type,\n",
" \"CST_ID\":CST_ID,\n",
" \"FOUP_ID\":FOUP_ID, \n",
"}"
]
},
{
"cell_type": "markdown",
"id": "4869fb86-67fe-4723-88da-838187374f33",
"metadata": {},
"source": [
"## TX"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "61df72ad-ffde-4bd4-bb47-13b341104510",
"metadata": {},
"outputs": [],
"source": [
"AlignMarkX1 = TotalData1['MCX'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkX2 = TotalData2['MCX'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkX3 = TotalData3['MCX'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkX4 = TotalData4['MCX'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "efdbdc07-c0c6-4f9f-83d0-7a0e67e5f1cb",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.421892</td>\n",
" <td>-1.097254</td>\n",
" <td>-0.095611</td>\n",
" <td>-0.631179</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.175618</td>\n",
" <td>0.211459</td>\n",
" <td>0.182185</td>\n",
" <td>0.261938</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.957500</td>\n",
" <td>-1.480500</td>\n",
" <td>-0.563000</td>\n",
" <td>-1.284500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.523125</td>\n",
" <td>-1.235500</td>\n",
" <td>-0.188500</td>\n",
" <td>-0.796750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.409000</td>\n",
" <td>-1.131000</td>\n",
" <td>-0.099250</td>\n",
" <td>-0.650750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-0.329250</td>\n",
" <td>-0.981000</td>\n",
" <td>0.042375</td>\n",
" <td>-0.455250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-0.008000</td>\n",
" <td>-0.574500</td>\n",
" <td>0.286000</td>\n",
" <td>-0.128500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.949500</td>\n",
" <td>0.906000</td>\n",
" <td>0.849000</td>\n",
" <td>1.156000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.526854</td>\n",
" <td>0.634377</td>\n",
" <td>0.546554</td>\n",
" <td>0.785814</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean -0.421892 -1.097254 -0.095611 -0.631179\n",
"std 0.175618 0.211459 0.182185 0.261938\n",
"min -0.957500 -1.480500 -0.563000 -1.284500\n",
"25% -0.523125 -1.235500 -0.188500 -0.796750\n",
"50% -0.409000 -1.131000 -0.099250 -0.650750\n",
"75% -0.329250 -0.981000 0.042375 -0.455250\n",
"max -0.008000 -0.574500 0.286000 -0.128500\n",
"range 0.949500 0.906000 0.849000 1.156000\n",
"3sigma 0.526854 0.634377 0.546554 0.785814"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AlignMarkX = pd.concat([AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4],axis=1)\n",
"AXdescibe = describe_3s(AlignMarkX)\n",
"AXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a7ea74e4-bf8a-48bb-9a98-9a4d29517161",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cb19e57cafe84c0ba0b8b8f48e157aa4",
"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)\n",
"ax[0].plot([i+1 for i in range(len(AlignMarkX.columns))],AXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"AlignMarkX.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\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]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_X/Day')\n",
"#ax[1].plot([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].bar([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'])\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"ax[1].axhline(0.57,c='green',ls='-.',label=r'3sigma_X:$<0.570um$')\n",
"for i in range(len(AlignMarkX.columns)):\n",
" ax[1].annotate(round(AXdescibe.loc['3sigma'][i],3), \n",
" xy=(i,AXdescibe.loc['3sigma'][i]),\n",
" xytext=(i,AXdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_X/Day')\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'{wafer_name} 平移误差X')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}-TX.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "ce155cc7-68df-4b80-bb8f-b9a777d3f3a4",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception during reset or similar\n",
"Traceback (most recent call last):\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 779, in _read_bytes\n",
" data = self._rfile.read(num_bytes)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\socket.py\", line 705, in readinto\n",
" return self._sock.recv_into(b)\n",
"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。\n",
"\n",
"During handling of the above exception, another exception occurred:\n",
"\n",
"Traceback (most recent call last):\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\pool\\base.py\", line 739, in _finalize_fairy\n",
" fairy._reset(pool)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\pool\\base.py\", line 988, in _reset\n",
" pool._dialect.do_rollback(self)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\", line 682, in do_rollback\n",
" dbapi_connection.rollback()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 488, in rollback\n",
" self._read_ok_packet()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 448, in _read_ok_packet\n",
" pkt = self._read_packet()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 739, in _read_packet\n",
" packet_header = self._read_bytes(4)\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 785, in _read_bytes\n",
" raise err.OperationalError(\n",
"pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)')\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"12.22.2 Die1 数据已成功追加到MySQL表中。\n",
"12.22.2 Die2 数据已成功追加到MySQL表中。\n",
"12.22.2 Die3 数据已成功追加到MySQL表中。\n",
"12.22.2 Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4]):\n",
" Data_describe['Mark_Type'] = \"MarkC\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"X\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(wafer_name,i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "dac67d51-004b-472e-82e3-e07e88f318f2",
"metadata": {},
"source": [
"## TY"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "4579faf9-142f-4fa3-b1b9-e99b71723859",
"metadata": {},
"outputs": [],
"source": [
"AlignMarkY1 = TotalData1['MCY'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkY2 = TotalData2['MCY'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkY3 = TotalData3['MCY'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AlignMarkY4 = TotalData4['MCY'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "5fbf8501-c6c5-4f98-8335-f82baf9c8eb9",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.00000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.067385</td>\n",
" <td>0.120454</td>\n",
" <td>-0.714278</td>\n",
" <td>0.27530</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.254821</td>\n",
" <td>0.371849</td>\n",
" <td>0.306622</td>\n",
" <td>0.45678</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.589000</td>\n",
" <td>-0.843000</td>\n",
" <td>-1.394500</td>\n",
" <td>-0.80000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.079125</td>\n",
" <td>-0.123500</td>\n",
" <td>-0.906750</td>\n",
" <td>-0.11700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.084750</td>\n",
" <td>0.225000</td>\n",
" <td>-0.746750</td>\n",
" <td>0.41125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.267875</td>\n",
" <td>0.431000</td>\n",
" <td>-0.494500</td>\n",
" <td>0.61050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.557500</td>\n",
" <td>0.706500</td>\n",
" <td>0.005500</td>\n",
" <td>1.10850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.146500</td>\n",
" <td>1.549500</td>\n",
" <td>1.400000</td>\n",
" <td>1.90850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.764463</td>\n",
" <td>1.115548</td>\n",
" <td>0.919867</td>\n",
" <td>1.37034</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.00000\n",
"mean 0.067385 0.120454 -0.714278 0.27530\n",
"std 0.254821 0.371849 0.306622 0.45678\n",
"min -0.589000 -0.843000 -1.394500 -0.80000\n",
"25% -0.079125 -0.123500 -0.906750 -0.11700\n",
"50% 0.084750 0.225000 -0.746750 0.41125\n",
"75% 0.267875 0.431000 -0.494500 0.61050\n",
"max 0.557500 0.706500 0.005500 1.10850\n",
"range 1.146500 1.549500 1.400000 1.90850\n",
"3sigma 0.764463 1.115548 0.919867 1.37034"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AlignMarkY = pd.concat([AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4],axis=1)\n",
"AYdescibe = describe_3s(AlignMarkY)\n",
"AYdescibe"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "b0683bd2-5a2d-4d04-928c-c5dc3d566000",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "13b4d053d802458db5df60413671ec56",
"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)\n",
"ax[0].plot([i+1 for i in range(len(AlignMarkY.columns))],AYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\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]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Y/Day')\n",
"ax[1].plot([i for i in 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.57,c='green',ls='-.',label=r'3sigma_Y:$<0.570um$')\n",
"for i in range(len(AlignMarkY.columns)):\n",
" ax[1].annotate(round(AYdescibe.loc['3sigma'][i],3), \n",
" xy=(i,AYdescibe.loc['3sigma'][i]),\n",
" xytext=(i,AYdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Y/Day')\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'{wafer_name} 平移误差Y')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}-TY.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "5f1d6399-bbf1-4ebb-939d-31128e80cd78",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4]):\n",
" Data_describe['Mark_Type'] = \"MarkC\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"Y\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "087d4ba5-1315-4865-ad1c-c954660b8086",
"metadata": {},
"source": [
"## 角度"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "290bb2e8-7d54-45d5-8842-e3d16b554edf",
"metadata": {},
"outputs": [],
"source": [
"# Angle1 = TotalData1['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# Angle2 = TotalData2['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# Angle3 = TotalData3['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# Angle4 = TotalData4['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "37f07195-5ea7-4e77-b9ec-896826d1393b",
"metadata": {},
"outputs": [],
"source": [
"Angle1 = TotalData1['Angle14'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"Angle2 = TotalData2['Angle14'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"Angle3 = TotalData3['Angle14'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"Angle4 = TotalData4['Angle14'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "2ea1616b-1af9-4cef-bdf7-7107d86d3b9e",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.002834</td>\n",
" <td>-0.004313</td>\n",
" <td>0.004049</td>\n",
" <td>0.008527</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.001915</td>\n",
" <td>0.001970</td>\n",
" <td>0.002124</td>\n",
" <td>0.002165</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.002164</td>\n",
" <td>-0.008389</td>\n",
" <td>-0.002694</td>\n",
" <td>0.002838</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.001412</td>\n",
" <td>-0.005470</td>\n",
" <td>0.002656</td>\n",
" <td>0.007352</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.002999</td>\n",
" <td>-0.004590</td>\n",
" <td>0.004275</td>\n",
" <td>0.008513</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.004219</td>\n",
" <td>-0.003387</td>\n",
" <td>0.005688</td>\n",
" <td>0.009878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.009071</td>\n",
" <td>0.001009</td>\n",
" <td>0.007850</td>\n",
" <td>0.015393</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>0.011235</td>\n",
" <td>0.009399</td>\n",
" <td>0.010544</td>\n",
" <td>0.012555</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.005746</td>\n",
" <td>0.005910</td>\n",
" <td>0.006373</td>\n",
" <td>0.006495</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean 0.002834 -0.004313 0.004049 0.008527\n",
"std 0.001915 0.001970 0.002124 0.002165\n",
"min -0.002164 -0.008389 -0.002694 0.002838\n",
"25% 0.001412 -0.005470 0.002656 0.007352\n",
"50% 0.002999 -0.004590 0.004275 0.008513\n",
"75% 0.004219 -0.003387 0.005688 0.009878\n",
"max 0.009071 0.001009 0.007850 0.015393\n",
"range 0.011235 0.009399 0.010544 0.012555\n",
"3sigma 0.005746 0.005910 0.006373 0.006495"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Angle = pd.concat([Angle1,Angle2,Angle3,Angle4],axis=1)\n",
"Angdescibe = describe_3s(Angle)\n",
"Angdescibe"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "25dbb680-c4cc-48ab-9fc1-ababfdf4cab7",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7f8b7a37fa714cc7bb7a0aef8e3a4838",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDG0lEQVR4nOzdd3QU1d8G8GfKlvRGCDWh9yYQCIggiIWOInZERKkKCAoGUZqCWEAUFUFsiAUBkWJBxVd/lEhR6TVC6DGk7m6SLbPz/rFkkiU92VSezzk5MHPn3rmzmezOd28TVFVVQUREREREVA7Eiq4AERERERHdOBiAEBERERFRuWEAQkRERERE5YYBCBERERERlRsGIEREREREVG4YgBARERERUblhAEJEREREROWGAQgREREREZUbBiBERERERFRuGIAQEREREVG5YQBCRERF9u2332LOnDlwOp2lLuu9997D22+/7YFauXM4HDCbzR4v12QyweFweLxcIqIbDQMQIiIqkqtXr2LRokWoU6cORLH0Hx+qquKTTz5BRkaGti8reChpgGO1WvHUU0/hrbfeypV26tQpLFmyBJs2bSpR2W+++SYmT54Mm81WovxEROQiqKqqVnQliIgqo507d2L27Nn45ZdfcqWtWbMGH374IeLj41GjRg0899xzGDRoUJHLTk5Oxvz58/F///d/sNlsuOmmm7Bw4ULUq1evXM9RVA6HA0888QR2796dZ3qtWrWwZcsW+Pn55UrbsmULpk2bVqzzff/992jcuHGx8qiqirFjx0IQBCxZsgTe3t5aWlJSEiZMmICZM2fi999/R8uWLdG3b99ilW+xWDBp0iQYDAa8++67EAShWPmJiMhFrugKEBFVRrGxsZg2bZrbQ2yWjRs34uWXX8bw4cPRoUMHbNiwAdOnT0fTpk3RokWLIpU/ZcoU/Pvvv5g4cSIkScL777+PSZMmYcOGDeV2jqJyOByIjo7GlStX8McffyAwMFBLO3z4MB555BEsWLAgz+ADAGRZhp+fH3bu3AkAOHPmDD744AO8+OKL8PHx0a73yJEjmDFjBmw2G/z9/YtVRwBYuXIlkpKS8MUXX0Cv17ulXbhwAT169EC7du1gNBrx+++/F7t8Hx8fvP/++7j//vvx8ccf4/HHHy92GURExACEiCiXgwcP4sknn0T9+vWRlJTklqYoCt5++208++yzGD16NADgzjvvRPfu3bFt27YiBQe7du3CwYMHsXnzZq01wsfHB7NmzcL58+dRp06dMj9H/fr1i/RaxMfH47nnnsPp06fx2WefwdfX120cxKJFizBo0CB06NABFosFAGA0GiFJknaMKIoQRVFrMXA4HPj+++8xf/58GAwGAEBCQgJOnToFb29vyHLxP5qSkpKwfPlyfPfdd7mCDwBo3rw53njjDaxZswY7duzA5MmTi30OANDr9ViyZAmGDRuGYcOGISAgoETlEBHdyBiAEBFdZ+/evZgxYwYAYNmyZW5pgiBg2bJlaNKkibbPx8cHer0edru9SOW3bdsW33zzjVtXqKCgIACA3W4vl3MUhaIomDRpEkwmE1RVxYABA/I87sCBA/juu++07RUrVqBXr15uxwiCgNWrV+O1117TAoxu3bpp6U6nE4qioE2bNnA4HPj666/RoUOHItUTANavX49bbrkl38Aqq9vUX3/9hZkzZxY5AMtLgwYN0LVrV3z77bd47LHHSlwOEdGNigEIEdF1Ro0aBVEU8+yqJIoiWrVq5bbv77//RlpaGjp27Fik8v38/HJ1V/rjjz8QHByMBg0alMs5ikKSJLz99tswGo2477778NRTT2ljUP777z8MGDAA3333HerUqaPliYqKytUC4XQ6IcsyRo4ciVGjRuHYsWO45557EBMTo3XBeu+997B7926sXr0aiqIUe3zFwYMH0bt37wKP8fPzyxUYldStt96a73gYIiIqGAMQIqLrFHeGp7fffhuNGzcu8cPt+fPnsWHDBjz99NP5nrs8zpGXsLAwAK4gQpIkrWtV1r+yLLt1twJyv36ZmZnQ6XRay4eiKADgNvuV3W7XZr66vryiuHTpklbX8hAWFobLly+X2/mIiKoTBiBERKXwzTffYNeuXVi5cmWJpqZ1Op2Ijo5GrVq18Oijj1bYOQqTkZGB2bNnY/bs2W778+uWlZPVanUbVJ6ZmQkAuPnmm92Oa9euXYnqBgA6nU4bg1IezGYzdDpduZ2PiKg6YQBCRFRCZ86cwcKFC/Hggw+iZ8+eJSpj5cqV+Ouvv/D555/Dy8urQs5RFKmpqfjwww9xyy23AACuXLmCXr164ddff3UbZ3J91zHAtYBfaGgoVFVFYmIiWrRogb/++ivP82RkZJSojg0bNsTJkydxxx13FDtvSZw8eRINGzYsl3MREVU3DECIiEogPT0dkyZNQnh4OKKjo0tUxu7du7F06VJMmTIlz7Ed5XGOorhw4QJsNhv0er3WypDVfSozM7PQlocrV66gZs2aMJlMuPXWWyHLcq5WEafTibS0NIwbNw7PPPNMsevYq1cvvPbaa5gwYYJHFkksiMPhwMaNG/Hiiy+W6XmIiKorBiBERMWkKAqmTJmC+Ph4rF+/XptKtjhOnz6NyZMn49Zbb8WTTz5ZIecoqoMHDwJAnt23itIFKy4uDq1atYK/vz8OHz6MxMREDBo0CAsXLtTGtMyaNQuHDx/GxIkTS1THvn374s0338Snn36KUaNGlaiMovroo49gNBoLHfRORER5YwBCRFRMK1aswO+//44pU6YgJSUFKSkpAFxT5TZq1AgAcOjQIdSpUwchISG58tvtdkyaNAmCIODRRx/F4cOHtbR69eohKCioXM5RVN999x2aNWuGzZs3a/uK2gXL4XBg//79ePDBB7V9ISEhmDdvHqZPn47ly5djz549+O233/DVV1/luYZHUciyjPnz52PMmDFo0aKF2xS/nrRjxw4sW7YMH330UYkGyxMREQMQIqJi++GHHwAAb731Ft566y1tf5cuXbB69WoAwL333ovo6Og814k4deoUYmNjAQAjR450S1u4cCHuueeecjlHUfzf//0f/u///g8LFy5025/VBUtVVW1fUlKSNltWlh07dsBms6Fz585u+fv27Yt//vkHI0aMAAB8/vnnpVqbA3BNAfziiy9i7NixWLRoEfr161eq8q63detWREdHY+7cubmuh4iIik5Qc356EBERXWO1WnHPPfegdu3aWLlypdvaHAcPHsTw4cOxdetWNGnSBKNGjcKuXbsQHh6O9evXa+M7RowYgYCAALz22mu4fPkyzp07h8OHD2Pnzp34999/0bt3b5w6dQqnT59G27Zt0axZM4SEhCA4OBj33ntviVpEtm/fDn9/f48HCX/++ScyMzM9tpYIEdGNigEIERHly2QyQRAE+Pr6FnhcfHw8MjIyEBER4Rao7N69G97e3qhfvz7uu+8+BAcHo23btujWrRt69uypBRjnz5/Hrl27cPDgQW2Gqddee61Mr42IiCoGAxAiIiIiIio3ZTtXIRERERERUQ4MQIiIiIiIqNwwACEiIiIionLDAISIiIiIiMoNAxAiIiIiIio3DECIiIiIiKjcMAAhIiIiIqJywwCEiIiIiIjKDQMQIiIiIiIqNwxAiIiIiIio3DAAISIiIiKicsMAhIiIiIiIyg0DECIiIiIiKjcMQIiIiIiIqNwwACEiIiIionLDAISIiIiIiMoNAxAiIiIiIio3DECIiIiIiKjcMAAhIqIb2oYNG6CqakVXg4johsEAhIiIPCI1NRUtW7bE0qVLy/Q8ffr0wYYNGzxS1oEDB/C///0PgiDg+eefR/PmzdGiRQt069YNTz/9NE6cOOGR8xARUTYGIERE5BG7d++G0+nEzp07K7oqRfbWW29hypQp2naDBg2wdu1aPP/88zh58iQeeOABBiFERB7GAISIiDxi586d0Ov1OHz4MNLS0iq6OoX67bff0KhRI0RERGj7jEYj2rVrhyFDhuCzzz4D4ApSiIjIcxiAEBGRR+zcuROPPPIIAFdrSGXmdDrxwQcfYOL
"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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDG0lEQVR4nOzdd3QU1d8G8GfKlvRGCDWh9yYQCIggiIWOInZERKkKCAoGUZqCWEAUFUFsiAUBkWJBxVd/lEhR6TVC6DGk7m6SLbPz/rFkkiU92VSezzk5MHPn3rmzmezOd28TVFVVQUREREREVA7Eiq4AERERERHdOBiAEBERERFRuWEAQkRERERE5YYBCBERERERlRsGIEREREREVG4YgBARERERUblhAEJEREREROWGAQgREREREZUbBiBERERERFRuGIAQEREREVG5YQBCRERF9u2332LOnDlwOp2lLuu9997D22+/7YFauXM4HDCbzR4v12QyweFweLxcIqIbDQMQIiIqkqtXr2LRokWoU6cORLH0Hx+qquKTTz5BRkaGti8reChpgGO1WvHUU0/hrbfeypV26tQpLFmyBJs2bSpR2W+++SYmT54Mm81WovxEROQiqKqqVnQliIgqo507d2L27Nn45ZdfcqWtWbMGH374IeLj41GjRg0899xzGDRoUJHLTk5Oxvz58/F///d/sNlsuOmmm7Bw4ULUq1evXM9RVA6HA0888QR2796dZ3qtWrWwZcsW+Pn55UrbsmULpk2bVqzzff/992jcuHGx8qiqirFjx0IQBCxZsgTe3t5aWlJSEiZMmICZM2fi999/R8uWLdG3b99ilW+xWDBp0iQYDAa8++67EAShWPmJiMhFrugKEBFVRrGxsZg2bZrbQ2yWjRs34uWXX8bw4cPRoUMHbNiwAdOnT0fTpk3RokWLIpU/ZcoU/Pvvv5g4cSIkScL777+PSZMmYcOGDeV2jqJyOByIjo7GlStX8McffyAwMFBLO3z4MB555BEsWLAgz+ADAGRZhp+fH3bu3AkAOHPmDD744AO8+OKL8PHx0a73yJEjmDFjBmw2G/z9/YtVRwBYuXIlkpKS8MUXX0Cv17ulXbhwAT169EC7du1gNBrx+++/F7t8Hx8fvP/++7j//vvx8ccf4/HHHy92GURExACEiCiXgwcP4sknn0T9+vWRlJTklqYoCt5++208++yzGD16NADgzjvvRPfu3bFt27YiBQe7du3CwYMHsXnzZq01wsfHB7NmzcL58+dRp06dMj9H/fr1i/RaxMfH47nnnsPp06fx2WefwdfX120cxKJFizBo0CB06NABFosFAGA0GiFJknaMKIoQRVFrMXA4HPj+++8xf/58GAwGAEBCQgJOnToFb29vyHLxP5qSkpKwfPlyfPfdd7mCDwBo3rw53njjDaxZswY7duzA5MmTi30OANDr9ViyZAmGDRuGYcOGISAgoETlEBHdyBiAEBFdZ+/evZgxYwYAYNmyZW5pgiBg2bJlaNKkibbPx8cHer0edru9SOW3bdsW33zzjVtXqKCgIACA3W4vl3MUhaIomDRpEkwmE1RVxYABA/I87sCBA/juu++07RUrVqBXr15uxwiCgNWrV+O1117TAoxu3bpp6U6nE4qioE2bNnA4HPj666/RoUOHItUTANavX49bbrkl38Aqq9vUX3/9hZkzZxY5AMtLgwYN0LVrV3z77bd47LHHSlwOEdGNigEIEdF1Ro0aBVEU8+yqJIoiWrVq5bbv77//RlpaGjp27Fik8v38/HJ1V/rjjz8QHByMBg0alMs5ikKSJLz99tswGo2477778NRTT2ljUP777z8MGDAA3333HerUqaPliYqKytUC4XQ6IcsyRo4ciVGjRuHYsWO45557EBMTo3XBeu+997B7926sXr0aiqIUe3zFwYMH0bt37wKP8fPzyxUYldStt96a73gYIiIqGAMQIqLrFHeGp7fffhuNGzcu8cPt+fPnsWHDBjz99NP5nrs8zpGXsLAwAK4gQpIkrWtV1r+yLLt1twJyv36ZmZnQ6XRay4eiKADgNvuV3W7XZr66vryiuHTpklbX8hAWFobLly+X2/mIiKoTBiBERKXwzTffYNeuXVi5cmWJpqZ1Op2Ijo5GrVq18Oijj1bYOQqTkZGB2bNnY/bs2W778+uWlZPVanUbVJ6ZmQkAuPnmm92Oa9euXYnqBgA6nU4bg1IezGYzdDpduZ2PiKg6YQBCRFRCZ86cwcKFC/Hggw+iZ8+eJSpj5cqV+Ouvv/D555/Dy8urQs5RFKmpqfjwww9xyy23AACuXLmCXr164ddff3UbZ3J91zHAtYBfaGgoVFVFYmIiWrRogb/++ivP82RkZJSojg0bNsTJkydxxx13FDtvSZw8eRINGzYsl3MREVU3DECIiEogPT0dkyZNQnh4OKKjo0tUxu7du7F06VJMmTIlz7Ed5XGOorhw4QJsNhv0er3WypDVfSozM7PQlocrV66gZs2aMJlMuPXWWyHLcq5WEafTibS0NIwbNw7PPPNMsevYq1cvvPbaa5gwYYJHFkksiMPhwMaNG/Hiiy+W6XmIiKorBiBERMWkKAqmTJmC+Ph4rF+/XptKtjhOnz6NyZMn49Zbb8WTTz5ZIecoqoMHDwJAnt23itIFKy4uDq1atYK/vz8OHz6MxMREDBo0CAsXLtTGtMyaNQuHDx/GxIkTS1THvn374s0338Snn36KUaNGlaiMovroo49gNBoLHfRORER5YwBCRFRMK1aswO+//44pU6YgJSUFKSkpAFxT5TZq1AgAcOjQIdSpUwchISG58tvtdkyaNAmCIODRRx/F4cOHtbR69eohKCioXM5RVN999x2aNWuGzZs3a/uK2gXL4XBg//79ePDBB7V9ISEhmDdvHqZPn47ly5djz549+O233/DVV1/luYZHUciyjPnz52PMmDFo0aKF2xS/nrRjxw4sW7YMH330UYkGyxMREQMQIqJi++GHHwAAb731Ft566y1tf5cuXbB69WoAwL333ovo6Og814k4deoUYmNjAQAjR450S1u4cCHuueeecjlHUfzf//0f/u///g8LFy5025/VBUtVVW1fUlKSNltWlh07dsBms6Fz585u+fv27Yt//vkHI0aMAAB8/vnnpVqbA3BNAfziiy9i7NixWLRoEfr161eq8q63detWREdHY+7cubmuh4iIik5Qc356EBERXWO1WnHPPfegdu3aWLlypdvaHAcPHsTw4cOxdetWNGnSBKNGjcKuXbsQHh6O9evXa+M7RowYgYCAALz22mu4fPkyzp07h8OHD2Pnzp34999/0bt3b5w6dQqnT59G27Zt0axZM4SEhCA4OBj33ntviVpEtm/fDn9/f48HCX/++ScyMzM9tpYIEdGNigEIERHly2QyQRAE+Pr6FnhcfHw8MjIyEBER4Rao7N69G97e3qhfvz7uu+8+BAcHo23btujWrRt69uypBRjnz5/Hrl27cPDgQW2Gqddee61Mr42IiCoGAxAiIiIiIio3ZTtXIRERERERUQ4MQIiIiIiIqNwwACEiIiIionLDAISIiIiIiMoNAxAiIiIiIio3DECIiIiIiKjcMAAhIiIiIqJywwCEiIiIiIjKDQMQIiIiIiIqNwxAiIiIiIio3DAAISIiIiKicsMAhIiIiIiIyg0DECIiIiIiKjcMQIiIiIiIqNwwACEiIiIionLDAISIiIiIiMoNAxAiIiIiIio3DECIiIiIiKjcMAAhIqIb2oYNG6CqakVXg4johsEAhIiIPCI1NRUtW7bE0qVLy/Q8ffr0wYYNGzxS1oEDB/C///0PgiDg+eefR/PmzdGiRQt069YNTz/9NE6cOOGR8xARUTYGIERE5BG7d++G0+nEzp07K7oqRfbWW29hypQp2naDBg2wdu1aPP/88zh58iQeeOABBiFERB7GAISIiDxi586d0Ov1OHz4MNLS0iq6OoX67bff0KhRI0RERGj7jEYj2rVrhyFDhuCzzz4D4ApSiIjIcxi
" </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)\n",
"ax[0].plot([i+1 for i in range(len(Angle.columns))],Angdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\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",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Angle/Day')\n",
"ax[1].plot([i for i in Angle.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(Angle.columns)):\n",
" ax[1].annotate(round(Angdescibe.loc['3sigma'][i],5), \n",
" xy=(i,Angdescibe.loc['3sigma'][i]),\n",
" xytext=(i,Angdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Angle/Day')\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'{wafer_name} 角度(°)')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}角度.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "dda54c7d-8aaf-41d5-a711-0cb44b20aae2",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception during reset or similar\n",
"Traceback (most recent call last):\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 779, in _read_bytes\n",
" data = self._rfile.read(num_bytes)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\socket.py\", line 705, in readinto\n",
" return self._sock.recv_into(b)\n",
"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。\n",
"\n",
"During handling of the above exception, another exception occurred:\n",
"\n",
"Traceback (most recent call last):\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\pool\\base.py\", line 739, in _finalize_fairy\n",
" fairy._reset(pool)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\pool\\base.py\", line 988, in _reset\n",
" pool._dialect.do_rollback(self)\n",
" File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\", line 682, in do_rollback\n",
" dbapi_connection.rollback()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 488, in rollback\n",
" self._read_ok_packet()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 448, in _read_ok_packet\n",
" pkt = self._read_packet()\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 739, in _read_packet\n",
" packet_header = self._read_bytes(4)\n",
" File \"C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python310\\site-packages\\pymysql\\connections.py\", line 785, in _read_bytes\n",
" raise err.OperationalError(\n",
"pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)')\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[Angle1,Angle2,Angle3,Angle4]):\n",
" Data_describe['Mark_Type'] = \"MarkC\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"Angle\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "8f9078d7",
"metadata": {},
"source": [
"## Mark1"
]
},
{
"cell_type": "markdown",
"id": "43d8d28a-a866-4d98-885f-cf20a8db85eb",
"metadata": {},
"source": [
"### Mark1X"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "87ad2953",
"metadata": {},
"outputs": [],
"source": [
"AngleMarkX1 = TotalData1['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX2 = TotalData2['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX3 = TotalData3['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX4 = TotalData4['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "20240c77-1fbe-4570-befd-f8377a148aff",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.957068</td>\n",
" <td>-0.998415</td>\n",
" <td>-0.821319</td>\n",
" <td>-1.843000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.195986</td>\n",
" <td>0.237298</td>\n",
" <td>0.259164</td>\n",
" <td>0.256825</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-1.677000</td>\n",
" <td>-1.674000</td>\n",
" <td>-1.304000</td>\n",
" <td>-2.231000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-1.062000</td>\n",
" <td>-1.163000</td>\n",
" <td>-1.030000</td>\n",
" <td>-2.077000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.962500</td>\n",
" <td>-0.977000</td>\n",
" <td>-0.863500</td>\n",
" <td>-1.846500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-0.856000</td>\n",
" <td>-0.873000</td>\n",
" <td>-0.604000</td>\n",
" <td>-1.641250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-0.384000</td>\n",
" <td>-0.399000</td>\n",
" <td>-0.045000</td>\n",
" <td>-1.153000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.293000</td>\n",
" <td>1.275000</td>\n",
" <td>1.259000</td>\n",
" <td>1.078000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.587959</td>\n",
" <td>0.711894</td>\n",
" <td>0.777493</td>\n",
" <td>0.770475</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean -0.957068 -0.998415 -0.821319 -1.843000\n",
"std 0.195986 0.237298 0.259164 0.256825\n",
"min -1.677000 -1.674000 -1.304000 -2.231000\n",
"25% -1.062000 -1.163000 -1.030000 -2.077000\n",
"50% -0.962500 -0.977000 -0.863500 -1.846500\n",
"75% -0.856000 -0.873000 -0.604000 -1.641250\n",
"max -0.384000 -0.399000 -0.045000 -1.153000\n",
"range 1.293000 1.275000 1.259000 1.078000\n",
"3sigma 0.587959 0.711894 0.777493 0.770475"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AngleMarkX = pd.concat([AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4],axis=1)\n",
"RXdescibe = describe_3s(AngleMarkX)\n",
"RXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "2dcd5e1f-bcd3-4100-8aa0-f2125301c1e3",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "28491b64fa9549f88fb669bc318695b6",
"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)\n",
"ax[0].plot([i+1 for i in range(len(AngleMarkX.columns))],RXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"AngleMarkX.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\n",
"for i in range(len(AngleMarkX.columns)):\n",
" ax[0].annotate(round(RXdescibe.loc['mean'][i],2), \n",
" xy=(i+1,RXdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,RXdescibe.loc['mean'][i]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_X/Day')\n",
"ax[1].plot([i for i in AngleMarkX.columns],RXdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"for i in range(len(AngleMarkX.columns)):\n",
" ax[1].annotate(round(RXdescibe.loc['3sigma'][i],3), \n",
" xy=(i,RXdescibe.loc['3sigma'][i]),\n",
" xytext=(i,RXdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_X/Day')\n",
"# ax[2].plot([i for i in AngleMarkX.columns],RXdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AngleMarkX.columns)):\n",
"# ax[2].annotate(round(RXdescibe.loc['range'][i],3), \n",
"# xy=(i,RXdescibe.loc['range'][i]),\n",
"# xytext=(i,RXdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_X/Day')\n",
"plt.suptitle(f'{wafer_name} 角度MarkX')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}角度MarkX.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "3956e406-6bf0-43dd-b57f-1d3fdc607b9e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4]):\n",
" Data_describe['Mark_Type'] = \"Mark1\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"X\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "4406faf8-495a-4d4e-b53a-587665b0a9a5",
"metadata": {},
"source": [
"### Mark1Y"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "03380b3b-300f-49b8-8404-7955ed589249",
"metadata": {},
"outputs": [],
"source": [
"AngleMarkY1 = TotalData1['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY2 = TotalData2['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY3 = TotalData3['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY4 = TotalData4['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "d9522aa4-1777-44ee-af0e-196d68f90e1e",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.128027</td>\n",
" <td>-0.652954</td>\n",
" <td>-0.595931</td>\n",
" <td>0.847700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.394851</td>\n",
" <td>0.459273</td>\n",
" <td>0.456107</td>\n",
" <td>0.481547</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.753000</td>\n",
" <td>-2.046000</td>\n",
" <td>-1.586000</td>\n",
" <td>-0.044000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.082750</td>\n",
" <td>-0.924000</td>\n",
" <td>-0.956500</td>\n",
" <td>0.416000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.161500</td>\n",
" <td>-0.587000</td>\n",
" <td>-0.612500</td>\n",
" <td>0.948000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.453500</td>\n",
" <td>-0.319000</td>\n",
" <td>-0.216000</td>\n",
" <td>1.198500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.871000</td>\n",
" <td>0.053000</td>\n",
" <td>0.161000</td>\n",
" <td>1.780000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.624000</td>\n",
" <td>2.099000</td>\n",
" <td>1.747000</td>\n",
" <td>1.824000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>1.184552</td>\n",
" <td>1.377818</td>\n",
" <td>1.368321</td>\n",
" <td>1.444641</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean 0.128027 -0.652954 -0.595931 0.847700\n",
"std 0.394851 0.459273 0.456107 0.481547\n",
"min -0.753000 -2.046000 -1.586000 -0.044000\n",
"25% -0.082750 -0.924000 -0.956500 0.416000\n",
"50% 0.161500 -0.587000 -0.612500 0.948000\n",
"75% 0.453500 -0.319000 -0.216000 1.198500\n",
"max 0.871000 0.053000 0.161000 1.780000\n",
"range 1.624000 2.099000 1.747000 1.824000\n",
"3sigma 1.184552 1.377818 1.368321 1.444641"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AngleMarkY = pd.concat([AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4],axis=1)\n",
"RYdescibe = describe_3s(AngleMarkY)\n",
"RYdescibe"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "67d6bf80-f656-4f1f-90f8-5d894eb936cd",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"image/png": "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JbpfabVa6PV6/PLLL9i6dSs+/vhjTJw4EQDKnOWqLCqVu8fwkCFDkJiYiDlz5pTreAD48ccfMXDgQDz55JPlPpaIiAKHAQgRUYCtX78eAPD222/j9ttv9/x78cUXPWluv/12fPfdd6Uen5qairS0NGRlZWHEiBFeefz6669BK6M8WrRoUSIA0Wg0mD17Ng4fPowxY8Zg/fr1mDZtGlQqFbZt21buMgD3jFdPPvkkvvnmG+zbt8+vPIiIKLQERVGUUFeCiIiIiIhqB7aAEBERERFR0DAAISIiIiKioGEAQkREREREQcMAhIiIiIiIgoYBCBERERERBQ0DECIiIiIiChoGIEREREREFDQMQIiIiIiIKGgYgBARERERUdAwACEiIiIioqBhAEJEREREREHDAISIiIiIiIKGAQgREREREQUNAxAiIiIiIgoaBiBERERERBQ0DECIiIiIiChoGIAQEREREVHQMAAhIiIiIqKgYQBCRERERERBwwCEiIiIiIiChgEIERFVKTabDWvXrg11NYiIqJIwACEiooBTFAWDBw/GxIkTvbbv3LkTKSkp+Pvvv8s8dunSpcjJyQEA9O3bFykpKWjTpg369u2LGTNmICMjo1LrTkRElYsBCBERBZwgCBg1ahT++9//4uzZs57tS5YsQdu2bdG9e/dSj8vKysKGDRtwxx13eLYNGjQIy5Ytw7333otvvvkGw4cPh9VqrfRzICKiysEAhIiIKsVNN92EuLg4fPrppwCAM2fO4Mcff8To0aPLPOaDDz7A6NGjoVKpPNtiYmLQqVMnjBo1Cm+88QbS0tLwxRdfVHr9iYiocjAAISKiSqFWqzFy5EisWLECeXl5WLZsGRo0aID+/fuXmv706dPYs2cPBgwYUGae1113HerWrYtffvmlsqpNRESVjAEIEVE1dN999+HFF1/EXXfdhU6dOmHdunUYN24cOnTogDlz5gAA1q1bh0GDBqFdu3YYMmQINm7c6JXH7t27ce+996Jjx4645ppr8Oabb0JRFADAyZMnkZKSggMHDuDpp59Gp06d0KtXL3zzzTflqucdd9wBQRDw2Wef4auvvsKDDz4IUSz9q+ftt9/G+PHjL5tnixYtcPjwYc/rY8eOYcyYMejcuTOuuuoqPP/8854uWtu3b0dKSgp2797tSW+z2dCpUycsWbKkXOdCRESBwQCEiKia+vbbb3H//fejffv2ePLJJ3HFFVfg3nvvxSeffIKNGzdi4sSJGDBgABYvXoz27dtjzJgxSEtLAwCYzWaMHj0aOp0OCxcuxNNPP43ly5djzZo1XmU8/fTTEAQB7777Lrp06YIXXnihXIPAw8LCcM8992D27NlQqVS49dZbS023f/9+mM1mdOnS5bJ5RkVFITs7G4B7sPvDDz+MixcvYv78+Zg+fTp+++03LF68GADQqVMnNGrUCN9//73n+N9//x02mw2DBw/2+TyIiChwGIAQEVVTgwYNwsCBA9GxY0c0btwY48aNwzXXXIO8vDy899576Nu3Lx5//HF07doVL774IsLDwz034haLBRMmTMDMmTPRtWtXDBgwAMnJydi5c6dXGfXr18drr72GK6+8ElOnToXdbseRI0fKVc/77rsPLpcLw4YNg1arLTXNW2+9hSeffNLnPAtaavLy8jBixAjMnj0
"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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JbpfabVa6PV6/PLLL9i6dSs+/vhjTJw4EQDKnOWqLCqVu8fwkCFDkJiYiDlz5pTreAD48ccfMXDgQDz55JPlPpaIiAKHAQgRUYCtX78eAPD222/j9ttv9/x78cUXPWluv/12fPfdd6Uen5qairS0NGRlZWHEiBFeefz6669BK6M8WrRoUSIA0Wg0mD17Ng4fPowxY8Zg/fr1mDZtGlQqFbZt21buMgD3jFdPPvkkvvnmG+zbt8+vPIiIKLQERVGUUFeCiIiIiIhqB7aAEBERERFR0DAAISIiIiKioGEAQkREREREQcMAhIiIiIiIgoYBCBERERERBQ0DECIiIiIiChoGIEREREREFDQMQIiIiIiIKGgYgBARERERUdAwACEiIiIioqBhAEJEREREREHDAISIiIiIiIKGAQgREREREQUNAxAiIiIiIgoaBiBERERERBQ0DECIiIiIiChoGIAQEREREVHQMAAhIiIiIqKgYQBCRERERERBwwCEiIiIiIiChgEIERFVKTabDWvXrg11NYiIqJIwACEiooBTFAWDBw/GxIkTvbbv3LkTKSkp+Pvvv8s8dunSpcjJyQEA9O3bFykpKWjTpg369u2LGTNmICMjo1LrTkRElYsBCBERBZwgCBg1ahT++9//4uzZs57tS5YsQdu2bdG9e/dSj8vKysKGDRtwxx13eLYNGjQIy5Ytw7333otvvvkGw4cPh9VqrfRzICKiysEAhIiIKsVNN92EuLg4fPrppwCAM2fO4Mcff8To0aPLPOaDDz7A6NGjoVKpPNtiYmLQqVMnjBo1Cm+88QbS0tLwxRdfVHr9iYiocjAAISKiSqFWqzFy5EisWLECeXl5WLZsGRo0aID+/fuXmv706dPYs2cPBgwYUGae1113HerWrYtffvmlsqpNRESVjAEIEVE1dN999+HFF1/EXXfdhU6dOmHdunUYN24cOnTogDlz5gAA1q1bh0GDBqFdu3YYMmQINm7c6JXH7t27ce+996Jjx4645ppr8Oabb0JRFADAyZMnkZKSggMHDuDpp59Gp06d0KtXL3zzzTflqucdd9wBQRDw2Wef4auvvsKDDz4IUSz9q+ftt9/G+PHjL5tnixYtcPjwYc/rY8eOYcyYMejcuTOuuuoqPP/8854uWtu3b0dKSgp2797tSW+z2dCpUycsWbKkXOdCRESBwQCEiKia+vbbb3H//fejffv2ePLJJ3HFFVfg3nvvxSeffIKNGzdi4sSJGDBgABYvXoz27dtjzJgxSEtLAwCYzWaMHj0aOp0OCxcuxNNPP43ly5djzZo1XmU8/fTTEAQB7777Lrp06YIXXnihXIPAw8LCcM8992D27NlQqVS49dZbS023f/9+mM1mdOnS5bJ5RkVFITs7G4B7sPvDDz+MixcvYv78+Zg+fTp+++03LF68GADQqVMnNGrUCN9//73n+N9//x02mw2DBw/2+TyIiChwGIAQEVVTgwYNwsCBA9GxY0c0btwY48aNwzXXXIO8vDy899576Nu3Lx5//HF07doVL774IsLDwz034haLBRMmTMDMmTPRtWtXDBgwAMnJydi5c6dXGfXr18drr72GK6+8ElOnToXdbseRI0fKVc/77rsPLpcLw4YNg1a
" </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)\n",
"ax[0].plot([i+1 for i in range(len(AngleMarkY.columns))],RYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"AngleMarkY.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(AngleMarkY.columns)):\n",
" ax[0].annotate(round(RYdescibe.loc['mean'][i],2), \n",
" xy=(i+1,RYdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,RYdescibe.loc['mean'][i]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Y/Day')\n",
"ax[1].plot([i for i in AngleMarkY.columns],RYdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_Y:$<0.800um$')\n",
"for i in range(len(AngleMarkY.columns)):\n",
" ax[1].annotate(round(RYdescibe.loc['3sigma'][i],3), \n",
" xy=(i,RYdescibe.loc['3sigma'][i]),\n",
" xytext=(i,RYdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Y/Day')\n",
"# ax[2].plot([i for i in AngleMarkY.columns],RYdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AngleMarkY.columns)):\n",
"# ax[2].annotate(round(RYdescibe.loc['range'][i],3), \n",
"# xy=(i,RYdescibe.loc['range'][i]),\n",
"# xytext=(i,RYdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_Y/Day')\n",
"plt.suptitle(f'{wafer_name} Mark1Y')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}Mark1Y.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "8e460762-218b-4a50-be73-af19975ae9d0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4]):\n",
" Data_describe['Mark_Type'] = \"Mark1\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"Y\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "37c654d0-1d33-4e93-9d35-ab46befc2df5",
"metadata": {},
"source": [
"## Mark4"
]
},
{
"cell_type": "markdown",
"id": "3b02145c-0184-4691-b0ae-45c98eec4394",
"metadata": {},
"source": [
"### Mark4X"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "c5346b7a-d741-422b-a92d-8fa04a7748a0",
"metadata": {},
"outputs": [],
"source": [
"AngleMarkX1 = TotalData1['M4X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX2 = TotalData2['M4X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX3 = TotalData3['M4X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkX4 = TotalData4['M4X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "4e36993f-b687-4cea-9c41-c14b3286a406",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.113284</td>\n",
" <td>-1.196092</td>\n",
" <td>0.630097</td>\n",
" <td>0.580643</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.301168</td>\n",
" <td>0.334478</td>\n",
" <td>0.294060</td>\n",
" <td>0.422881</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.814000</td>\n",
" <td>-1.826000</td>\n",
" <td>-0.102000</td>\n",
" <td>-0.653000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.060500</td>\n",
" <td>-1.399000</td>\n",
" <td>0.444500</td>\n",
" <td>0.344750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.135500</td>\n",
" <td>-1.242000</td>\n",
" <td>0.666000</td>\n",
" <td>0.541000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.301500</td>\n",
" <td>-0.962000</td>\n",
" <td>0.859250</td>\n",
" <td>0.810000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.745000</td>\n",
" <td>-0.256000</td>\n",
" <td>1.142000</td>\n",
" <td>1.785000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.559000</td>\n",
" <td>1.570000</td>\n",
" <td>1.244000</td>\n",
" <td>2.438000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.903505</td>\n",
" <td>1.003433</td>\n",
" <td>0.882180</td>\n",
" <td>1.268644</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean 0.113284 -1.196092 0.630097 0.580643\n",
"std 0.301168 0.334478 0.294060 0.422881\n",
"min -0.814000 -1.826000 -0.102000 -0.653000\n",
"25% -0.060500 -1.399000 0.444500 0.344750\n",
"50% 0.135500 -1.242000 0.666000 0.541000\n",
"75% 0.301500 -0.962000 0.859250 0.810000\n",
"max 0.745000 -0.256000 1.142000 1.785000\n",
"range 1.559000 1.570000 1.244000 2.438000\n",
"3sigma 0.903505 1.003433 0.882180 1.268644"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AngleMarkX = pd.concat([AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4],axis=1)\n",
"RXdescibe = describe_3s(AngleMarkX)\n",
"RXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "58c2ebf7-c90d-4556-b18d-008b340b1dc2",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "85a8513355b1407f9f2cab937a1d2d96",
"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)\n",
"ax[0].plot([i+1 for i in range(len(AngleMarkX.columns))],RXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"AngleMarkX.boxplot(ax=ax[0])\n",
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\n",
"for i in range(len(AngleMarkX.columns)):\n",
" ax[0].annotate(round(RXdescibe.loc['mean'][i],2), \n",
" xy=(i+1,RXdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,RXdescibe.loc['mean'][i]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_X/Day')\n",
"ax[1].plot([i for i in AngleMarkX.columns],RXdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"for i in range(len(AngleMarkX.columns)):\n",
" ax[1].annotate(round(RXdescibe.loc['3sigma'][i],3), \n",
" xy=(i,RXdescibe.loc['3sigma'][i]),\n",
" xytext=(i,RXdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_X/Day')\n",
"# ax[2].plot([i for i in AngleMarkX.columns],RXdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AngleMarkX.columns)):\n",
"# ax[2].annotate(round(RXdescibe.loc['range'][i],3), \n",
"# xy=(i,RXdescibe.loc['range'][i]),\n",
"# xytext=(i,RXdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_X/Day')\n",
"plt.suptitle(f'{wafer_name} 角度MarkX')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}角度MarkX.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "f1a5fb7d-01d6-46d3-b282-e44ec0b4baa7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4]):\n",
" Data_describe['Mark_Type'] = \"Mark4\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"X\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "5800a758-12a5-4186-8422-afb66f5c1729",
"metadata": {},
"source": [
"### Mark4Y"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "95145e50-1a97-41bb-8d4b-88e857d706e1",
"metadata": {},
"outputs": [],
"source": [
"AngleMarkY1 = TotalData1['M4Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY2 = TotalData2['M4Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY3 = TotalData3['M4Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"AngleMarkY4 = TotalData4['M4Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "d3e69052-3bbb-4ae4-b32c-b430912de5e8",
"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>01.06.2-Die1</th>\n",
" <th>01.06.1-Die2</th>\n",
" <th>01.06.1-Die3</th>\n",
" <th>01.06.1-Die4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>74.000000</td>\n",
" <td>65.000000</td>\n",
" <td>72.000000</td>\n",
" <td>70.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.006743</td>\n",
" <td>0.893862</td>\n",
" <td>-0.832625</td>\n",
" <td>-0.297100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.261096</td>\n",
" <td>0.397253</td>\n",
" <td>0.269575</td>\n",
" <td>0.530157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.708000</td>\n",
" <td>0.152000</td>\n",
" <td>-1.470000</td>\n",
" <td>-2.025000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.138000</td>\n",
" <td>0.545000</td>\n",
" <td>-1.052500</td>\n",
" <td>-0.633750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.036500</td>\n",
" <td>0.987000</td>\n",
" <td>-0.831000</td>\n",
" <td>-0.172500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.206750</td>\n",
" <td>1.197000</td>\n",
" <td>-0.647000</td>\n",
" <td>0.062750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.684000</td>\n",
" <td>1.508000</td>\n",
" <td>-0.110000</td>\n",
" <td>0.525000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>range</th>\n",
" <td>1.392000</td>\n",
" <td>1.356000</td>\n",
" <td>1.360000</td>\n",
" <td>2.550000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3sigma</th>\n",
" <td>0.783288</td>\n",
" <td>1.191760</td>\n",
" <td>0.808726</td>\n",
" <td>1.590471</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 01.06.2-Die1 01.06.1-Die2 01.06.1-Die3 01.06.1-Die4\n",
"count 74.000000 65.000000 72.000000 70.000000\n",
"mean 0.006743 0.893862 -0.832625 -0.297100\n",
"std 0.261096 0.397253 0.269575 0.530157\n",
"min -0.708000 0.152000 -1.470000 -2.025000\n",
"25% -0.138000 0.545000 -1.052500 -0.633750\n",
"50% 0.036500 0.987000 -0.831000 -0.172500\n",
"75% 0.206750 1.197000 -0.647000 0.062750\n",
"max 0.684000 1.508000 -0.110000 0.525000\n",
"range 1.392000 1.356000 1.360000 2.550000\n",
"3sigma 0.783288 1.191760 0.808726 1.590471"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AngleMarkY = pd.concat([AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4],axis=1)\n",
"RYdescibe = describe_3s(AngleMarkY)\n",
"RYdescibe"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "914ab598-84e5-492e-8cc6-6fc6bb46a737",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4ac2cd80b07049d4bf591ce8c3e51d79",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADHcElEQVR4nOzdd3gUVdsG8HvKtmyyaYQSILRA6E2aCFIFqYLCawEBRRTBFxARy4ciYAEVEQVUFEEUuxRBUOy8KEgRqQJJ6C1AeraX+f5YssmShLTNbsr9uy4umNmZc84sZ3bn2dMERVEUEBERERER+YEY6AIQEREREVHVwQCEiIiIiIj8hgEIERERERH5DQMQIiIiIiLyGwYgRERERETkNwxAiIiIiIjIbxiAEBERERGR3zAAISIiIiIiv2EAQkREREREfsMAhIiIiIiI/IYBCBFRCf3xxx/o27dvvq+tWbMGvXr1QvPmzXHrrbdi48aNxUo7NTUV06dPR/v27dGyZUvcf//9OHfunN/zuJGnn34acXFxWLlypWffI488gri4OKxdu7ZYZSnIuXPnEBcXV6xyTZo0CU8//bRP8geALVu2oGnTpkhMTPTaP378eNx///0+y4eIqKpgAEJEVAKJiYl44okn4HK58ry2fv16vPjii+jevTtefPFFxMTEYObMmTh69GiR0582bRp2796NyZMnY8aMGTh+/DimTJni1zyKKneex44dK/b5vrRp0yb8/PPPPk2zf//+iImJwUcffeTZl5iYiD/++AMPPfSQT/MiIqoK5EAXgIioojlw4AAmTJiAunXrIiUlxes1p9OJt956CzNmzMD48eMBuB9gu3btiq1bt6Jp06aFpv/nn3/iwIED2LhxI+rUqQMA0Ov1mDVrFs6ePYvo6Ogyz6Nu3bpFfj+yg46MjAxcvHixyOf5WkpKCl588UUEBwf7NF1RFPHggw9i/vz5mD59OsLCwvDRRx+hcePG6NGjh0/zIiKqCtgCQkRUTLt378ZTTz2F++67L89rgiBgyZIlXl1z9Ho91Go17HZ7kdJv1aoVvvrqK09gAADh4eEAALvd7pc8iqpdu3ZISEiAw+HA0aNHUa1aNdSuXbvI5/vSnDlzEBsbW2C3uNIYPnw49Ho9vvjiC6SmpmLDhg2e4I+IiIqHAQgRUTE98MADuPPOO/N9TRRFNG/eHGq12rNv3759yMjIQPv27YuUfkhICGJjY732bdu2DREREahfv75f8iiqmJgYSJKEEydO4OjRo2jSpInX606nE2+88QZuvfVWtGvXDvfccw8OHz7sdcz999+Pt99+G4mJiZg4cSI6dOgAp9OZb36JiYno3LkzFixY4LV/69at2LZtG1555RUIglDk8heVRqPBmDFjsGbNGqxZswbh4eEYNGiQz/MhIqoKGIAQERWTKBbvo/Ott95Co0aNStxd5+zZs1i7di3GjRtXYN7+yCM/oiiiUaNGOHr0KI4dO5YnAHn//fexYsUKTJs2DcuXL0f16tUxderUfPMfPXo0atSogWnTpuVbhqSkJDz00EO47bbb8NRTT3n2p6WlYc6cOZgxY8YNu45lZWXh9OnTuHTpUpGvL7d7770XWVlZWLZsGcaNGweVSlWidIiIqjoGIEREZeirr77Cn3/+iaeffrrYgQsAuFwuPPPMM6hZsybGjBkTsDxuJC4uDseOHcPRo0cRFxeX57W33noLd955Jzp27IihQ4fi7NmzSE5O9jpuw4YNeOGFFzBnzhyMHj06TytGRkYGxo8fj4YNG2Lu3Ller7344ouIjY3Nt0tcblu3bkW/fv1KNNAeAAwGA+644w5IkoSRI0eWKA0iIuIgdCKiMnPy5Em88soruPfee3HrrbeWKI33338ff//9Nz755BPodLqA5FGYJk2aYNu2bUhISMjTAtKjRw98//33eOaZZ7Bv3z6cPn0aAGA2m72O6969O/r3719gHo8//jiMRiNMJhPsdjs0Gg0A4LfffsMvv/yCjRs3lknXq+tFRERAo9FAr9eXeV5ERJUVW0CIiMqAyWTClClTEBMTg2eeeaZEaezYsQOLFy/GtGnT8h3b4Y88iqJJkyb4888/YbPZ8owrmT59OubOnYvq1avjiSeewFdffZVvGm3atLlhHhEREdi0aRMURfFad+T777+H0WhE7969ERcXh7i4OKxbtw7r1q1DXFwc/vrrL8+xd955J44dO4Yvv/yyRNdJRES+wRYQIiIfczqdmDZtGpKSkvDNN994fq0vjoSEBEydOhU9e/bEhAkTApJHUWW3etSrVw9ardazPzMzE1u2bMFLL72EESNGAHAPdC+JV155BWFhYfjvf/+LefPm4a677kJUVBSmTJmCsWPHeh27ePFiAMDUqVMRExPjVZ7Lly9Dq9UGbKYuIiJiAEJE5HPLly/H77//jmnTpiEtLQ1paWkA3FPlNmzYEABw8OBBREdHIzIyMs/5drsdU6ZMgSAIGDNmDA4dOuR5rU6dOggPD/dLHkUVFRWF8PDwPN2vNBoNdDodfvnlF9SvXx8HDx7E0qVLAaDAWa4KIsvur6thw4Zh5cqVWLRoEV5++WVER0cjOjra69iwsDAAQLNmzbz2//jjj3jmmWfQpk0btoIQEQUQu2AREfnYli1bAABvvvkmRowY4fkze/ZszzEjRozAxo0b8z0/Pj4eiYmJSEtLw9ixY73S+PXXX/2WR3E0adIkTwCiVquxcOFCnDhxAhMmTMCWLVswZ84cyLKMvXv3FjsPwD3r1uOPP45169bhyJEjJUqDiIgCS1AURQl0IYiIiIiIqGpgCwgREREREfkNAxAiIiIiIvIbBiBEREREROQ3DECIiIiIiMhvGIAQEREREZHfMAAhIiIiIiK/YQBCRERERER+wwCEiIiIiIj8hgEIERERERH5DQMQIiIiIiLyGwYgRERERETkNwxAiIiIiIjIbxiAEBERERGR3zAAISIiIiIiv2EAQkREREREfsMAhIiIiIiI/IYBCBERERER+Q0DECIiIiIi8hsGIERERERE5DcMQIiIiIiIyG8YgBARUblitVqxadOmQBeDiIjKCAMQIiLyOUVRMGTIEEyfPt1r/z///IO4uDj89ddfBZ67evVqZGRkAAB69+6NuLg4tGjRAr1798a8efOQkpJSpmUnIqKyxQCEiIh8ThAEjB8/Hj/88AMuXbrk2b9q1Sq0atUKnTt3zve8tLQ0bN26Ff/5z388+wYPHoyPP/4Yo0aNwrp16zB69GhYLJYyvwYiIiobDECIiKhMDBo0CFFRUfjkk08AABcvXsSPP/6Ihx56qMBz3nvvPTz00EOQZdmzLyIiAu3bt8f48ePx2muvITExEZ9//nmZl5+IiMoGAxAiIioTKpUK48aNw5dffgmz2YyPP/4YtWvXRr9+/fI9/sKFCzh06BD69+9fYJp9+vRB9erV8csvv5RVsYmIqIwxACEiqoDuv/9+zJ49G/fccw/at2+PzZs3Y9KkSWjbti0WLVoEANi8eTMGDx6M1q1bY9iwYdixY4dXGgcPHsSoUaPQrl07dO/eHa+//joURQEAnDt3DnFxcTh27BhmzpyJ9u3b49Zbb8W6deuKVc7//Oc/EAQBn376Kb7++ms8+OCDEMX8v3refPNNTJ06tdA0mzRpghMnTni2T58+jQkTJuCmm25C165d8dxzz3m6aP3999+Ii4vDwYMHPcdbrVa0b98eq1atKta1EBGRbzAAISKqoL799luMGTMGbdq0weOPP46WLVti1KhR+Oijj7Bjxw5Mnz4d/fv3x4oVK9CmTRtMmDABiYmJAACj0YiHHnoIWq0Wy5cvx8yZM7FmzRps2LDBK4+ZM2dCEAQsXboUHTp0wPPPP1+sQeBBQUG47777sHDhQsiyjOHDh+d73NGjR2E0GtGhQ4dC0wwLC0N6ejoA92D3Rx55BFevXsWSJUswd+5c/Pbbb1ixYgUAoH379qhXrx6+++47z/m///47rFYrhgwZUuTrICIi32EAQkRUQQ0ePBgDBw5Eu3btUL9+fUyaNAndu3eH2WzGsmXL0Lt3b/z3v/9
"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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADHcElEQVR4nOzdd3gUVdsG8HvKtmyyaYQSILRA6E2aCFIFqYLCawEBRRTBFxARy4ciYAEVEQVUFEEUuxRBUOy8KEgRqQJJ6C1AeraX+f5YssmShLTNbsr9uy4umNmZc84sZ3bn2dMERVEUEBERERER+YEY6AIQEREREVHVwQCEiIiIiIj8hgEIERERERH5DQMQIiIiIiLyGwYgRERERETkNwxAiIiIiIjIbxiAEBERERGR3zAAISIiIiIiv2EAQkREREREfsMAhIiIiIiI/IYBCBFRCf3xxx/o27dvvq+tWbMGvXr1QvPmzXHrrbdi48aNxUo7NTUV06dPR/v27dGyZUvcf//9OHfunN/zuJGnn34acXFxWLlypWffI488gri4OKxdu7ZYZSnIuXPnEBcXV6xyTZo0CU8//bRP8geALVu2oGnTpkhMTPTaP378eNx///0+y4eIqKpgAEJEVAKJiYl44okn4HK58ry2fv16vPjii+jevTtefPFFxMTEYObMmTh69GiR0582bRp2796NyZMnY8aMGTh+/DimTJni1zyKKneex44dK/b5vrRp0yb8/PPPPk2zf//+iImJwUcffeTZl5iYiD/++AMPPfSQT/MiIqoK5EAXgIioojlw4AAmTJiAunXrIiUlxes1p9OJt956CzNmzMD48eMBuB9gu3btiq1bt6Jp06aFpv/nn3/iwIED2LhxI+rUqQMA0Ov1mDVrFs6ePYvo6Ogyz6Nu3bpFfj+yg46MjAxcvHixyOf5WkpKCl588UUEBwf7NF1RFPHggw9i/vz5mD59OsLCwvDRRx+hcePG6NGjh0/zIiKqCtgCQkRUTLt378ZTTz2F++67L89rgiBgyZIlXl1z9Ho91Go17HZ7kdJv1aoVvvrqK09gAADh4eEAALvd7pc8iqpdu3ZISEiAw+HA0aNHUa1aNdSuXbvI5/vSnDlzEBsbW2C3uNIYPnw49Ho9vvjiC6SmpmLDhg2e4I+IiIqHAQgRUTE98MADuPPOO/N9TRRFNG/eHGq12rNv3759yMjIQPv27YuUfkhICGJjY732bdu2DREREahfv75f8iiqmJgYSJKEEydO4OjRo2jSpInX606nE2+88QZuvfVWtGvXDvfccw8OHz7sdcz999+Pt99+G4mJiZg4cSI6dOgAp9OZb36JiYno3LkzFixY4LV/69at2LZtG1555RUIglDk8heVRqPBmDFjsGbNGqxZswbh4eEYNGiQz/MhIqoKGIAQERWTKBbvo/Ott95Co0aNStxd5+zZs1i7di3GjRtXYN7+yCM/oiiiUaNGOHr0KI4dO5YnAHn//fexYsUKTJs2DcuXL0f16tUxderUfPMfPXo0atSogWnTpuVbhqSkJDz00EO47bbb8NRTT3n2p6WlYc6cOZgxY8YNu45lZWXh9OnTuHTpUpGvL7d7770XWVlZWLZsGcaNGweVSlWidIiIqjoGIEREZeirr77Cn3/+iaeffrrYgQsAuFwuPPPMM6hZsybGjBkTsDxuJC4uDseOHcPRo0cRFxeX57W33noLd955Jzp27IihQ4fi7NmzSE5O9jpuw4YNeOGFFzBnzhyMHj06TytGRkYGxo8fj4YNG2Lu3Ller7344ouIjY3Nt0tcblu3bkW/fv1KNNAeAAwGA+644w5IkoSRI0eWKA0iIuIgdCKiMnPy5Em88soruPfee3HrrbeWKI33338ff//9Nz755BPodLqA5FGYJk2aYNu2bUhISMjTAtKjRw98//33eOaZZ7Bv3z6cPn0aAGA2m72O6969O/r3719gHo8//jiMRiNMJhPsdjs0Gg0A4LfffsMvv/yCjRs3lknXq+tFRERAo9FAr9eXeV5ERJUVW0CIiMqAyWTClClTEBMTg2eeeaZEaezYsQOLFy/GtGnT8h3b4Y88iqJJkyb4888/YbPZ8owrmT59OubOnYvq1avjiSeewFdffZVvGm3atLlhHhEREdi0aRMURfFad+T777+H0WhE7969ERcXh7i4OKxbtw7r1q1DXFwc/vrrL8+xd955J44dO4Yvv/yyRNdJRES+wRYQIiIfczqdmDZtGpKSkvDNN994fq0vjoSEBEydOhU9e/bEhAkTApJHUWW3etSrVw9ardazPzMzE1u2bMFLL72EESNGAHAPdC+JV155BWFhYfjvf/+LefPm4a677kJUVBSmTJmCsWPHeh27ePFiAMDUqVMRExPjVZ7Lly9Dq9UGbKYuIiJiAEJE5HPLly/H77//jmnTpiEtLQ1paWkA3FPlNmzYEABw8OBBREdHIzIyMs/5drsdU6ZMgSAIGDNmDA4dOuR5rU6dOggPD/dLHkUVFRWF8PDwPN2vNBoNdDodfvnlF9SvXx8HDx7E0qVLAaDAWa4KIsvur6thw4Zh5cqVWLRoEV5++WVER0cjOjra69iwsDAAQLNmzbz2//jjj3jmmWfQpk0btoIQEQUQu2AREfnYli1bAABvvvkmRowY4fkze/ZszzEjRozAxo0b8z0/Pj4eiYmJSEtLw9ixY73S+PXXX/2WR3E0adIkTwCiVquxcOFCnDhxAhMmTMCWLVswZ84cyLKMvXv3FjsPwD3r1uOPP45169bhyJEjJUqDiIgCS1AURQl0IYiIiIiIqGpgCwgREREREfkNAxAiIiIiIvIbBiBEREREROQ3DECIiIiIiMhvGIAQEREREZHfMAAhIiIiIiK/YQBCRERERER+wwCEiIiIiIj8hgEIERERERH5DQMQIiIiIiLyGwYgRERERETkNwxAiIiIiIjIbxiAEBERERGR3zAAISIiIiIiv2EAQkREREREfsMAhIiIiIiI/IYBCBERERER+Q0DECIiIiIi8hsGIERERERE5DcMQIiIiIiIyG8YgBARUblitVqxadOmQBeDiIjKCAMQIiLyOUVRMGTIEEyfPt1r/z///IO4uDj89ddfBZ67evVqZGRkAAB69+6NuLg4tGjRAr1798a8efOQkpJSpmUnIqKyxQCEiIh8ThAEjB8/Hj/88AMuXbrk2b9q1Sq0atUKnTt3zve8tLQ0bN26Ff/5z388+wYPHoyPP/4Yo0aNwrp16zB69GhYLJYyvwYiIiobDECIiKhMDBo0CFFRUfjkk08AABcvXsSPP/6Ihx56qMBz3nvvPTz00EOQZdmzLyIiAu3bt8f48ePx2muvITExEZ9//nmZl5+IiMoGAxAiIioTKpUK48aNw5dffgmz2YyPP/4YtWvXRr9+/fI9/sKFCzh06BD69+9fYJp9+vRB9erV8csvv5RVsYmIqIwxACEiqoDuv/9+zJ49G/fccw/at2+PzZs3Y9KkSWjbti0WLVoEANi8eTMGDx6M1q1bY9iwYdixY4dXGgcPHsSoUaPQrl07dO/eHa+//joURQEAnDt3DnFxcTh27BhmzpyJ9u3b49Zbb8W6deuKVc7//Oc/EAQBn376Kb7++ms8+OCDEMX8v3refPNNTJ06tdA0mzRpghMnTni2T58+jQkTJuCmm25C165d8dxzz3m6aP3999+Ii4vDwYMHPcdbrVa0b98eq1atKta1EBGRbzAAISKqoL799luMGTMGbdq0weOPP46WLVti1KhR+Oijj7Bjxw5Mnz4d/fv3x4oVK9CmTRtMmDABiYmJAACj0YiHHnoIWq0Wy5cvx8yZM7FmzRps2LDBK4+ZM2dCEAQsXboUHTp0wPPPP1+sQeBBQUG47777sHDhQsiyjOHDh+d73NGjR2E0GtGhQ4dC0wwLC0N6ejoA92D3Rx55BFevXsWSJUswd+5c/Pbbb1ixYgUAoH379qhXrx6+++47z/m///47rFYrhgwZUuTrICIi32EAQkRUQQ0ePBgDBw5Eu3b
" </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)\n",
"ax[0].plot([i+1 for i in range(len(AngleMarkY.columns))],RYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"AngleMarkY.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(AngleMarkY.columns)):\n",
" ax[0].annotate(round(RYdescibe.loc['mean'][i],2), \n",
" xy=(i+1,RYdescibe.loc['mean'][i]),\n",
" xytext=(i+0.95,RYdescibe.loc['mean'][i]+0.05),\n",
" color=\"r\")\n",
"ax[0].legend()\n",
"ax[0].set_title('mean_Y/Day')\n",
"ax[1].plot([i for i in AngleMarkY.columns],RYdescibe.loc['3sigma'],marker = 'o')\n",
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_Y:$<0.800um$')\n",
"for i in range(len(AngleMarkY.columns)):\n",
" ax[1].annotate(round(RYdescibe.loc['3sigma'][i],3), \n",
" xy=(i,RYdescibe.loc['3sigma'][i]),\n",
" xytext=(i,RYdescibe.loc['3sigma'][i]),\n",
" color=\"r\")\n",
"ax[1].legend() \n",
"ax[1].set_title('3sigam_Y/Day')\n",
"# ax[2].plot([i for i in AngleMarkY.columns],RYdescibe.loc['range'],marker = 'o')\n",
"# for i in range(len(AngleMarkY.columns)):\n",
"# ax[2].annotate(round(RYdescibe.loc['range'][i],3), \n",
"# xy=(i,RYdescibe.loc['range'][i]),\n",
"# xytext=(i,RYdescibe.loc['range'][i]),\n",
"# color=\"r\")\n",
"# ax[2].set_title('Range_Y/Day')\n",
"plt.suptitle(f'{wafer_name} Mark4Y')\n",
"fig.tight_layout()\n",
"plt.savefig(f'Wafer/{wafer_name}Mark4Y.jpg',dpi=200)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "374df894-a1c0-4ae0-bdee-db358b11801b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die1 数据已成功追加到MySQL表中。\n",
"Die2 数据已成功追加到MySQL表中。\n",
"Die3 数据已成功追加到MySQL表中。\n",
"Die4 数据已成功追加到MySQL表中。\n"
]
}
],
"source": [
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4]):\n",
" Data_describe['Mark_Type'] = \"Mark4\"\n",
" Data_describe['Die_Type'] = i\n",
" Data_describe['Value_Type'] = \"Y\"\n",
" df = Data_transform(j,Data_describe)\n",
" print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "markdown",
"id": "b2f46985-33b2-4d0e-9d9d-048888845651",
"metadata": {},
"source": [
"## 过去&未来 Mark3&Mark2"
]
},
{
"cell_type": "markdown",
"id": "31b36a67",
"metadata": {},
"source": [
"### Mark3X"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "1f15ce7d-9c0e-4ea4-a1ca-da8cd15f6ee7",
"metadata": {},
"outputs": [],
"source": [
"# AlignMarkX1 = TotalData1['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkX2 = TotalData2['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkX3 = TotalData3['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkX4 = TotalData4['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "f5c34355-9eec-494f-9bd3-9a5cc80b4758",
"metadata": {},
"outputs": [],
"source": [
"# AlignMarkX = pd.concat([AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4],axis=1)\n",
"# AXdescibe = describe_3s(AlignMarkX)\n",
"# AXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9fd13260-c29d-48ff-8354-b50383c16e46",
"metadata": {},
"outputs": [],
"source": [
"# for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4]):\n",
"# Data_describe['Mark_Type'] = \"Mark3\"\n",
"# Data_describe['Die_Type'] = i\n",
"# Data_describe['Value_Type'] = \"X\"\n",
"# df = Data_transform(j,Data_describe)\n",
"# print(wafer_name,i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "56f1ad89-c919-4a7b-a5d4-b9be4ddaeb0d",
"metadata": {},
"outputs": [],
"source": [
"# plt.figure()\n",
"# plt.subplot(221)\n",
"# plt.plot(AlignMarkX1,marker='o')\n",
"# sigmaX1 = round(AlignMarkX1.iloc[:,0].std()*3,4)\n",
"# plt.title(f'Die1对位MarkX-3sigma:{sigmaX1}')\n",
"\n",
"# plt.subplot(222)\n",
"# plt.plot(AlignMarkX2,marker='o')\n",
"# sigmaX2 = round(AlignMarkX2.iloc[:,0].std()*3,4)\n",
"# plt.title(f'Die2对位MarkX-3sigma:{sigmaX2}')\n",
"\n",
"# plt.subplot(223)\n",
"# plt.plot(AlignMarkX3,marker='o')\n",
"# sigmaX3 = round(AlignMarkX3.iloc[:,0].std()*3,4)\n",
"# plt.title(f'Die3对位MarkX-3sigma:{sigmaX3}')\n",
"\n",
"# plt.subplot(224)\n",
"# plt.plot(AlignMarkX4,marker='o')\n",
"# sigmaX4 = round(AlignMarkX4.iloc[:,0].std()*3,4)\n",
"# plt.title(f'Die4对位MarkX-3sigma:{sigmaX4}')\n",
"\n",
"# plt.tight_layout()\n",
"# plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "5355743f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_22484\\3640730753.py:1: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). Consider using `matplotlib.pyplot.close()`.\n",
" fig, ax = plt.subplots(2,1)\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "96586f5041144b27a4b0df144a73520a",
"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)\n",
"# ax[0].plot([i+1 for i in range(len(AlignMarkX.columns))],AXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"# AlignMarkX.boxplot(ax=ax[0])\n",
"# ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\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]+0.05),\n",
"# color=\"r\")\n",
"# ax[0].legend()\n",
"# ax[0].set_title('mean_X/Day')\n",
"# #ax[1].plot([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'],marker = 'o')\n",
"# ax[1].bar([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'])\n",
"# ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"# ax[1].axhline(0.57,c='green',ls='-.',label=r'3sigma_X:$<0.570um$')\n",
"# for i in range(len(AlignMarkX.columns)):\n",
"# ax[1].annotate(round(AXdescibe.loc['3sigma'][i],3), \n",
"# xy=(i,AXdescibe.loc['3sigma'][i]),\n",
"# xytext=(i,AXdescibe.loc['3sigma'][i]),\n",
"# color=\"r\")\n",
"# ax[1].legend() \n",
"# ax[1].set_title('3sigam_X/Day')\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'{wafer_name} 对位MarkX')\n",
"# fig.tight_layout()\n",
"# plt.savefig(f'Wafer/{wafer_name}对位MarkX.jpg',dpi=200)\n",
"# plt.show()"
]
},
{
"cell_type": "markdown",
"id": "64f88c9a",
"metadata": {},
"source": [
"### Mark3Y"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "9e294f7b-3ea3-4a33-99b5-92e22bd1a827",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# AlignMarkY1 = TotalData1['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkY2 = TotalData2['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkY3 = TotalData3['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AlignMarkY4 = TotalData4['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "fd581438-5123-4128-8e03-b64e8e5c1540",
"metadata": {},
"outputs": [],
"source": [
"# AlignMarkY = pd.concat([AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4],axis=1)\n",
"# AYdescibe = describe_3s(AlignMarkY)\n",
"# AYdescibe"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "f5b5850b-6acf-4559-a1c4-a15fcaf8faf2",
"metadata": {},
"outputs": [],
"source": [
"# for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4]):\n",
"# Data_describe['Die_Type'] = i\n",
"# Data_describe['Value_Type'] = \"Y\"\n",
"# df = Data_transform(j,Data_describe)\n",
"# print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "81162e4f-1ed2-4365-9e55-2a0177174f18",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "727614078adb42e28ed6499af00d1f44",
"version_major": 2,
"version_minor": 0
},
"image/png": "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bx6effZZdO7cGffffz8EQcCRI0cc5jt48CA6duyIjz76COPGjUOdOnUcpquqilmzZiE2NhaffPIJAgICitRj9erV2ja5olGjRujVqxdq167tEHwREd3MGIAQEZXR2bNn8dprr2HMmDHo3bu3S+v4+OOPceDAAbzxxhswGo1VUkZZDBs2DIIg4MKFC9ozJJMmTUJcXBx++umnYpebOnVqkVQwwNbtbWBgIH744QcAQHJyMi5cuFDsNrZo0QJxcXGIjY1FixYtHKa1bt0aTZs2xcKFC3HvvfeiT58+TnviCg0NxfTp04ut67Jly7Bz506kpKTg+vXrxc5XUWFhYQgODnYpmCQiqon4a0hEVAaZmZl46qmnEBUVhVmzZrm0jp07d2LJkiWYNm2a02c7PFFGWaiqivnz56N///5ISUnRHiKvX78+nn766SLv9igLHx8f3Hbbbfj1118B2N4Totfr0bVrV6fzN2vWDBaLBX/99VeRAGTt2rWYMGECsrOzMX78eHz33XeoW7dukXU0b95cexDeGZPJhDVr1mDAgAF4/fXXnc7z5JNP4uTJk1i8eHFZN5WIiErBAISIqBSyLGPatGlISkrCe++9B4PBUO51nD59Gk8//TRuv/12PPLII1VSRll98sknOHnyJObOnYu5c+fi448/xuHDhwHY7nA0bdrUpfX26NEDe/fuRXZ2Nvbs2YOOHTvCz8/P6bwGgwFRUVEAUCQFa926dRg6dCjmzZuHu+66C/7+/g4v/Curp59+Go0bN8YzzzyD3bt345dffikyT3JyMuLj4x1Sx4iIqGIYgBARlWLZsmX49ddfMWnSJKSmpuLIkSM4cuQIzpw5o81z5MgR3Lhxw+ny+Q86C4KABx98EEePHtXWkZKS4rEyymL58uV49913sWjRItSqVQu9e/fGgAEDsHz58jKvoyBZlrUUroEDB2LdunXw9fXFb7/9hu7du2vzWa1Wh658AVsaVmhoKCIiIhzGh4aG4tChQ9i5cye2bNmCBx54AGazucjypdHpbP2wNGrUCPfeey8WLlwIq9XqMM/atWsxdOjQYu+QEBFR+bEXLCKiUnz33XcAgHfeeQfvvPOONr5r165YvXo1AODee+/FrFmzMHHixCLLx8XFaW/6njBhgsO01157Dffcc49HyijNunXrsGjRIrz11lu47bbbtPEvvfSSw52KS5cu4dq1a4iLi0OPHj2crkuWZYiiiD///LPYuzHvvvsu3n33XW34s88+c5jeokULp3c2Zs+ejRdffBGPPfYY6tSpg9GjR2Pbtm3Yv3+/9v6S8vrXv/6FLVu2aOldRETkPoJaXHcmRER0U5FlGYcPH0bHjh1LnG/p0qV47733UK9ePbzzzjto165dkXmeeeYZ+Pr64vnnn8elS5cc3nHiTG5uLurWrYugoKAKbQMREXk/BiBERFQuJpMJJpOpSLe2BT388MMICgrCokWLPFgzIiKqDhiAEBERERGRx/AhdCIiIiIi8hgGIERERERE5DEMQIiIiIiIyGMYgBARERERkccwACEiIiIiIo9hAEJERERERB7DAISIiIiIiDyGAQgREREREXkMAxAiIiIiIvIYBiBEREREROQxDECIiIiIiMhjGIAQEREREZHHMAAhIiIiIiKPYQBCREREREQewwCEiIiIiIg
"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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADN6UlEQVR4nOzdd3gU5doG8HtmdrPZ9EIIUkInhA7S5FCkSBdRxCMCAqKCelQED4oHlaIoFhBFj6Io9bNQRURFxWOlg/RACJBQQ0ndTdnszHx/bDKbTTZtk91swv27rlww9X1ndnbnfWaeeUdQVVUFERERERGRB4hVXQEiIiIiIrp5MAAhIiIiIiKPYQBCREREREQewwCEiIiIiIg8hgEIERERERF5DAMQIiIiIiLyGAYgRERERETkMQxAiIiIiIjIYxiAEBERERGRxzAAISIiIiIij2EAQkRELnnppZewZMmSYqebTCan4zMyMtxVJSIiqgYYgBARkUsuXbqEixcvOp0myzIGDx6MRYsWOYx///33MWrUKFgsFk9UkYiIvBADECKiPH/++ScGDBjgdNratWvRt29ftGrVCr1798Y333xTrnWnpKRg+vTp6NSpE9q0aYPx48fjwoULHi+jNGvXrsXKlSuxZs0ahz9nAYOfnx9E0flpZN++fbh27RqaNGniMH748OG4ePEiVqxY4XS5jRs3Ijo6GlOnTtXGLV++HNHR0Xj++efLtS0l6devHzZu3Fhp6yvsk08+QYcOHZCamqqNU1UVQ4YMqdTtICKqjhiAEBEBiI+Px4wZM6AoSpFpmzdvxiuvvIJevXrhlVdeQVRUFGbOnInY2Ngyr3/atGnYu3cvnnjiCTz77LM4deoUnnrqKY+WURZnz55FbGwsTpw4gRMnTuCXX37B4sWLoSgKcnNznS5jtVqRnZ3tMG7dunUIDAzEkCFDkJCQgJMnTyI+Ph5WqxWjR49GWFgY4uPjHf4KOnnypNP/Vxf3338/dDodvvrqK23cb7/9hrNnz2Ly5MlVWDMioqqnq+oKEBFVtcOHD+ORRx5BgwYNkJyc7DBNlmW8++67ePbZZ7WG46BBg9CjRw9s374dLVu2LHX9f/31Fw4fPoxvvvkG9evXBwD4+/tj9uzZOH/+POrWrev2Mho0aFCmfTF79myH4dWrVyMzMxNz5szBpk2bnC6zadMmtG/fXmtsX7t2Dd9//z0GDBgAg8GAN998E7///jv0er22zNatW7X/K4qCJk2aYP369dq4S5cuIT09HUFBQeUKwrxFQEAAxowZg7Vr1+Khhx6CTqfDqlWr0KdPHzRv3ryqq0dEVKUYgBDRTW/v3r147rnnAABLly51mCYIApYuXYpmzZpp4/z9/eHj41PsHYHC2rZti3Xr1mmBAQCEhoYCAHJzcz1SRln9+uuvuHr1KkaPHg0AOH78ONq3b4/JkydjxowZMBqNEAQBADBz5kwYjUa89NJLkGVZW8eyZcuQm5sLf39/AEX3aWnq1asHi8WCkydPokOHDjhz5gzat29frnV4gwcffBArVqzA999/j5YtW+KPP/7A2rVrq7paRERVjilYRHTTmzRpEu655x6n00RRRKtWreDj46ONO3jwINLT09GpU6cyrT8wMNAhuABs6ThhYWFo1KiRR8ooq4yMDMydOxc//fQTVFXFH3/8gc6dOyMiIgJxcXEICAiAv78//P39IUkSdDodgoKCtGAnPj4en3/+OYKDgx3Wu2rVKvz8888O4z7++GMMHz4cZ8+eLVKP6OhoLW1LEAQ0bNjQYfqWLVswdOhQtG/fHoMHD3a4owIA7733HsaPH4+MjAzMmTMHPXv2xM6dO51uc2ZmJkaPHo2xY8cWSSWriIiICNx9991YuXIlVq5ciQ4dOqBz586Vtn4iouqKd0CI6KZX3IPUxXn33XfRtGlT9OnTx6Xyzp8/j40bN+LJJ58stmxPlOHM8OHDkZOTgxkzZmDatGlISUnBbbfdhqSkJDz66KNYunQpbr/9dqfLKoqCf//732jdunWRoOevv/6C2WxG//79tXFHjx5FRkaG0wCpRYsWiI2N1QIrSZK0afv378fMmTMxadIk9O/fH7t378Zzzz2H9u3bO6Sa5ebmYsKECYiIiMDUqVPRuHHjIuXk5ubiqaeegizL+Oijj+Dr6+swPTU1FWlpafD390etWrXKsAcdPfTQQxgyZAiOHTtWYpfFREQ3E94BISIqh3Xr1uGvv/7C888/X+7ABbA10mfNmoU6dergwQcfrLIySjJq1ChMnjwZr7/+Ovr16wd/f39ERkbin//8JxYtWgRVVZ0uJ4oiBg4ciFdffVVL08o3cuRI7N27F0lJSdq4o0ePon///kXmBWwByMmTJxEbG4vo6GiHab6+vpg3bx6effZZdO7cGffffz8EQcCRI0cc5jt48CA6duyIjz76COPGjUOdOnUcpquqilmzZiE2NhaffPIJAgICitRj9erV2ja5olGjRujVqxdq167tEHwREd3MGIAQEZXR2bNn8dprr2HMmDHo3bu3S+v4+OOPceDAAbzxxhswGo1VUkZZDBs2DIIg4MKFC9ozJJMmTUJcXBx++umnYpebOnVqkVQwwNbtbWBgIH744QcAQHJyMi5cuFDsNrZo0QJxcXGIjY1FixYtHKa1bt0aTZs2xcKFC3HvvfeiT58+TnviCg0NxfTp04ut67Jly7Bz506kpKTg+vXrxc5XUWFhYQgODnYpmCQiqon4a0hEVAaZmZl46qmnEBUVhVmzZrm0jp07d2LJkiWYNm2a02c7PFFGWaiqivnz56N///5ISUnRHiKvX78+nn766SLv9igLHx8f3Hbbbfj1118B2N4Totfr0bVrV6fzN2vWDBaLBX/99VeRAGTt2rWYMGECsrOzMX78eHz33XeoW7dukXU0b95cexDeGZPJhDVr1mDAgAF4/fXXnc7z5JNP4uTJk1i8eHFZN5WIiErBAISIqBSyLGPatGlISkrCe++9B4PBUO51nD59Gk8//TRuv/12PPLII1VSRll98sknOHnyJObOnYu5c+fi448/xuHDhwHY7nA0bdrUpfX26NEDe/fuRXZ2Nvbs2YOOHTvCz8/P6bwGgwFRUVEAUCQFa926dRg6dCjmzZuHu+66C/7+/g4v/Curp59+Go0bN8YzzzyD3bt345dffikyT3JyMuLj4x1Sx4iIqGIYgBARlWLZsmX49ddfMWnSJKSmpuLIkSM4cuQIzpw5o81z5MgR3Lhxw+ny+Q86C4KABx98EEePHtXWkZKS4rEyymL58uV49913sWjRItSqVQu9e/fGgAEDsHz58jKvoyBZlrUUroEDB2LdunXw9fXFb7/9hu7du2vzWa1Wh658AVsaVmhoKCIiIhzGh4aG4tChQ9i5cye2bNmCBx54AGazucjypdHpbP2wNGrUCPfeey8WLlwIq9XqMM/atWsxdOjQYu+QEBFR+bEXLCKiUnz33XcAgHfeeQfvvPOONr5r165YvXo1AODee+/FrFmzMHHixCLLx8XFaW/6njBhgsO01157Dffcc49HyijNunXrsGjRIrz11lu47bbbtPEvvfSSw52KS5cu4dq1a4iLi0OPHj2crkuWZYiiiD///LPYuzHvvvsu3n33XW34s88+c5jeokULp3c2Zs+ejRdffBGPPfYY6tSpg9GjR2Pbtm3Yv3+/9v6S8vrXv/6FLVu2aOldRETkPoJaXHcmRER0U5FlGYcPH0bHjh1LnG/p0qV47733UK9ePbzzzjto165dkXmeeeYZ+Pr64vnnn8elS5cc3nHiTG5uLurWrYugoKAKbQMREXk/BiBERFQuJpMJJpOpSLe2BT388MMICgrCokWLPFgzIiKqDhiAEBERERGRx/AhdCIiIiIi8hgGIERERERE5DEMQIiIiIiIyGMYgBARERERkccwACEiIiIiIo9hAEJERERERB7DAISIiIiIiDyGAQgREREREXkMAxAiIiIiIvIYBiBEREREROQxDECIiIiIiMhjGIAQEREREZH
" </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)\n",
"# ax[0].plot([i+1 for i in range(len(AlignMarkY.columns))],AYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\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]+0.05),\n",
"# color=\"r\")\n",
"# ax[0].legend()\n",
"# ax[0].set_title('mean_Y/Day')\n",
"# ax[1].plot([i for i in 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.57,c='green',ls='-.',label=r'3sigma_Y:$<0.570um$')\n",
"# for i in range(len(AlignMarkY.columns)):\n",
"# ax[1].annotate(round(AYdescibe.loc['3sigma'][i],3), \n",
"# xy=(i,AYdescibe.loc['3sigma'][i]),\n",
"# xytext=(i,AYdescibe.loc['3sigma'][i]),\n",
"# color=\"r\")\n",
"# ax[1].legend() \n",
"# ax[1].set_title('3sigam_Y/Day')\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'{wafer_name} 对位MarkY')\n",
"# fig.tight_layout()\n",
"# plt.savefig(f'Wafer/{wafer_name}对位MarkY.jpg',dpi=200)\n",
"# plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "22af4398-48a4-44fe-96d2-c521a5570c6f",
"metadata": {},
"outputs": [],
"source": [
"# for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[Angle1,Angle2,Angle3,Angle4]):\n",
"# Data_describe['Die_Type'] = i\n",
"# Data_describe['Value_Type'] = \"Angle\"\n",
"# df = Data_transform(j,Data_describe)\n",
"# print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "code",
"execution_count": 114,
"id": "8cc808cd-dde4-4226-8560-0abfc1d3652c",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "72bc7bb699924dc4a093714dcd7cc0fc",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACy/klEQVR4nOzdd3wT5R8H8M/lkiZp0skos2wKlA1lVpYMmaKIG1ERZSigIAg/ZIosmeJCQGWoKGBFhnuyh7J32atAd9I2835/hF6bzjRN01I+79erL7h77rnnufSa3DfPEiRJkkBEREREROQFiuKuABERERER3T8YgBARERERkdcwACEiIiIiIq9hAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiKXfffdd5g2bRrsdnuhz/Xhhx9i6dKlHqiVM6vVCoPB4PHzJicnw2q1evy8RET3GwYgRETkkjt37mDu3LmoVKkSFIrCf3xIkoTPP/8cqamp8r704MHdAMdkMuHVV1/F4sWLs6WdPXsWixYtwubNm90694IFCzB69GiYzWa38hMRkYMgSZJU3JUgIiqJdu7cialTp+LXX3/NlrZu3TqsWLECMTExKFu2LN5880307dvX5XPHx8dj5syZ+PPPP2E2m9GsWTPMnj0bVapU8WoZrrJarXjppZewe/fuHNMrVKiALVu2wM/PL1vali1bMHbs2AKVt23bNtSqVatAeSRJwiuvvAJBELBo0SL4+vrKaXFxcRgxYgQmTZqEv/76C/Xr10fXrl0LdH6j0YhRo0ZBrVbjgw8+gCAIBcpPREQOyuKuABFRSRQdHY2xY8c6PcSmi4qKwjvvvIOBAweiadOm2LRpE8aPH486deqgXr16Lp1/zJgxOH/+PEaOHAlRFPHRRx9h1KhR2LRpk9fKcJXVasXEiRNx8+ZN/P333wgMDJTTjh07hmeffRbvvvtujsEHACiVSvj5+WHnzp0AgAsXLuCTTz7B22+/DZ1OJ1/v8ePHMWHCBJjNZvj7+xeojgDw6aefIi4uDl9++SV8fHyc0q5evYrIyEg0btwYGo0Gf/31V4HPr9Pp8NFHH+GJJ57AZ599hhdffLHA5yAiIgYgRETZHDlyBEOHDkXVqlURFxfnlGaz2bB06VKMGzcOQ4YMAQD06NED7dq1w88//+xScLBr1y4cOXIEP/zwg9waodPpMHnyZFy5cgWVKlUq8jKqVq3q0msRExODN998E+fOncPq1auh1+udxkHMnTsXffv2RdOmTWE0GgEAGo0GoijKxygUCigUCrnFwGq1Ytu2bZg5cybUajUA4Pbt2zh79ix8fX2hVBb8oykuLg4ff/wxvv/++2zBBwCEhYXhvffew7p167Bjxw6MHj26wGUAgI+PDxYtWoQBAwZgwIABCAgIcOs8RET3MwYgRERZ7N+/HxMmTAAALFu2zClNEAQsW7YMtWvXlvfpdDr4+PjAYrG4dP5GjRrh22+/deoKFRQUBACwWCxeKcMVNpsNo0aNQnJyMiRJQu/evXM87vDhw/j+++/l7eXLl6Njx45OxwiCgDVr1mDevHlygNG2bVs53W63w2azoWHDhrBarVi/fj2aNm3qUj0BYOPGjXjggQdyDazSu039+++/mDRpkssBWE6qV6+O1q1b47vvvsPzzz/v9nmIiO5XDECIiLJ44YUXoFAocuyqpFAo0KBBA6d9//33H5KSktC8eXOXzu/n55etu9Lff/+N4OBgVK9e3StluEIURSxduhQajQaPP/44Xn31VXkMyq1bt9C7d298//33qFSpkpynTZs22Vog7HY7lEolBg8ejBdeeAEnT57Eo48+ij179shdsD788EPs3r0ba9asgc1mK/D4iiNHjqBz5855HuPn55ctMHJXp06dch0PQ0REeWMAQkSURUFneFq6dClq1arl9sPtlStXsGnTJrz22mu5lu2NMnISEhICwBFEiKIod61K/1epVDp1twKyv35paWlQqVRyy4fNZgMAp9mvLBaLPPNV1vO54vr163JdvSEkJAQ3btzwWnlERKUJAxAiokL49ttvsWvXLnz66aduTU1rt9sxceJEVKhQAc8991yxlZGf1NRUTJ06FVOnTnXan1u3rMxMJpPToPK0tDQAQPv27Z2Oa9y4sVt1AwCVSiWPQfEGg8EAlUrltfKIiEoTBiBERG66cOECZs+ejaeeegodOnRw6xyffvop/v33X6xduxZarbZYynBFYmIiVqxYgQceeAAAcPPmTXTs2BG//fab0ziTrF3HAMcCfuXKlYMkSYiNjUW9evXw77//5lhOamqqW3WsUaMGzpw5g+7duxc4rzvOnDmDGjVqeKUsIqLShgEIEZEbUlJSMGrUKISGhmLixIlunWP37t1YsmQJxowZk+PYDm+U4YqrV6/CbDbDx8dHbmVI7z6VlpaWb8vDzZs3Ub58eSQnJ6NTp05QKpXZWkXsdjuSkpIwbNgwvP766wWuY8eOHTFv3jyMGDHCI4sk5sVqtSIqKgpvv/12kZZDRFRaMQAhIiogm82GMWPGICYmBhs3bpSnki2Ic+fOYfTo0ejUqROGDh1aLGW46siRIwCQY/ctV7pgXbp0CQ0aNIC/vz+OHTuG2NhY9O3bF7Nnz5bHtEyePBnHjh3DyJEj3apj165dsWDBAnzxxRd44YUX3DqHq1atWgWNRpPvoHciIsoZAxAiogJavnw5/vrrL4wZMwYJCQlISEgA4Jgqt2bNmgCAo0ePolKlSihTpky2/BaLBaNGjYIgCHjuuedw7NgxOa1KlSoICgryShmu+v7771G3bl388MMP8j5Xu2BZrVYcPHgQTz31lLyvTJkymDFjBsaPH4+PP/4Y+/btwx9//IGvv/46xzU8XKFUKjFz5ky8/PLLqFevntMUv560Y8cOLFu2DKtWrXJrsDwRETEAISIqsO3btwMAFi9ejMWLF8v7W7VqhTVr1gAAHnvsMUycODHHdSLOnj2L6OhoAMDgwYOd0mbPno1HH33UK2W44s8//8Sff/6J2bNnO+1P74IlSZK8Ly4uTp4tK92OHTtgNpvRsmVLp/xdu3bFoUOHMGjQIADA2rVrC7U2B+CYAvjtt9/GK6+8grlz56Jnz56FOl9WW7duxcSJEzF9+vRs10NERK4TpMyfHkRERHeZTCY8+uijqFixIj799FOntTmOHDmCgQMHYuvWrahduzZeeOEF7Nq1C6Ghodi4caM8vmPQoEEICAjAvHnzcOPGDVy+fBnHjh3Dzp07cf78eXTu3Blnz57FuXPn0KhRI9StWxdlypRBcHAwHnvsMbdaRH7//Xf4+/t7PEjYu3cv0tLSPLaWCBHR/YoBCBER5So5ORmCIECv1+d5XExMDFJTU1GtWjWnQGX37t3w9fVF1apV8fjjjyM4OBiNGjVC27Zt0aFDBznAuHLlCnbt2oUjR47IM0zNmzevSK+NiIiKBwMQIiIiIiLymqKdq5CIiIiIiCgTBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUMQIiI6L6yadMmSJJU3NUgIrpvMQAhIiK3JCYmon79+liyZEmRltOlSxds2rTJI+c6fPgw/vnnHwiCgLfeegthYWGoV68e2rZti9deew2nT5/2SDlERJQ7BiBEROSW3bt3w263Y+fOncVdFZctXrwYY8aMkberV6+Ob775Bm+99RbOnDmDJ598kkEIEVERYwBCRERu2blzJ3x8fHDs2DEkJSUVd3Xy9ccff6BmzZqoVq2avE+j0aBx48Z4+OGHsXr1agCOIIWIiIoOAxAiInLLzp078eyzzwJwtIaUZHa7HZ988glGjhyZ6zEhISHo3Lkz/vn
"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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACy/klEQVR4nOzdd3wT5R8H8M/lkiZp0skos2wKlA1lVpYMmaKIG1ERZSigIAg/ZIosmeJCQGWoKGBFhnuyh7J32atAd9I2835/hF6bzjRN01I+79erL7h77rnnufSa3DfPEiRJkkBEREREROQFiuKuABERERER3T8YgBARERERkdcwACEiIiIiIq9hAEJERERERF7DAISIiIiIiLyGAQgREREREXkNAxAiIiIiIvIaBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiKXfffdd5g2bRrsdnuhz/Xhhx9i6dKlHqiVM6vVCoPB4PHzJicnw2q1evy8RET3GwYgRETkkjt37mDu3LmoVKkSFIrCf3xIkoTPP/8cqamp8r704MHdAMdkMuHVV1/F4sWLs6WdPXsWixYtwubNm90694IFCzB69GiYzWa38hMRkYMgSZJU3JUgIiqJdu7cialTp+LXX3/NlrZu3TqsWLECMTExKFu2LN5880307dvX5XPHx8dj5syZ+PPPP2E2m9GsWTPMnj0bVapU8WoZrrJarXjppZewe/fuHNMrVKiALVu2wM/PL1vali1bMHbs2AKVt23bNtSqVatAeSRJwiuvvAJBELBo0SL4+vrKaXFxcRgxYgQmTZqEv/76C/Xr10fXrl0LdH6j0YhRo0ZBrVbjgw8+gCAIBcpPREQOyuKuABFRSRQdHY2xY8c6PcSmi4qKwjvvvIOBAweiadOm2LRpE8aPH486deqgXr16Lp1/zJgxOH/+PEaOHAlRFPHRRx9h1KhR2LRpk9fKcJXVasXEiRNx8+ZN/P333wgMDJTTjh07hmeffRbvvvtujsEHACiVSvj5+WHnzp0AgAsXLuCTTz7B22+/DZ1OJ1/v8ePHMWHCBJjNZvj7+xeojgDw6aefIi4uDl9++SV8fHyc0q5evYrIyEg0btwYGo0Gf/31V4HPr9Pp8NFHH+GJJ57AZ599hhdffLHA5yAiIgYgRETZHDlyBEOHDkXVqlURFxfnlGaz2bB06VKMGzcOQ4YMAQD06NED7dq1w88//+xScLBr1y4cOXIEP/zwg9waodPpMHnyZFy5cgWVKlUq8jKqVq3q0msRExODN998E+fOncPq1auh1+udxkHMnTsXffv2RdOmTWE0GgEAGo0GoijKxygUCigUCrnFwGq1Ytu2bZg5cybUajUA4Pbt2zh79ix8fX2hVBb8oykuLg4ff/wxvv/++2zBBwCEhYXhvffew7p167Bjxw6MHj26wGUAgI+PDxYtWoQBAwZgwIABCAgIcOs8RET3MwYgRERZ7N+/HxMmTAAALFu2zClNEAQsW7YMtWvXlvfpdDr4+PjAYrG4dP5GjRrh22+/deoKFRQUBACwWCxeKcMVNpsNo0aNQnJyMiRJQu/evXM87vDhw/j+++/l7eXLl6Njx45OxwiCgDVr1mDevHlygNG2bVs53W63w2azoWHDhrBarVi/fj2aNm3qUj0BYOPGjXjggQdyDazSu039+++/mDRpkssBWE6qV6+O1q1b47vvvsPzzz/v9nmIiO5XDECIiLJ44YUXoFAocuyqpFAo0KBBA6d9//33H5KSktC8eXOXzu/n55etu9Lff/+N4OBgVK9e3StluEIURSxduhQajQaPP/44Xn31VXkMyq1bt9C7d298//33qFSpkpynTZs22Vog7HY7lEolBg8ejBdeeAEnT57Eo48+ij179shdsD788EPs3r0ba9asgc1mK/D4iiNHjqBz5855HuPn55ctMHJXp06dch0PQ0REeWMAQkSURUFneFq6dClq1arl9sPtlStXsGnTJrz22mu5lu2NMnISEhICwBFEiKIod61K/1epVDp1twKyv35paWlQqVRyy4fNZgMAp9mvLBaLPPNV1vO54vr163JdvSEkJAQ3btzwWnlERKUJAxAiokL49ttvsWvXLnz66aduTU1rt9sxceJEVKhQAc8991yxlZGf1NRUTJ06FVOnTnXan1u3rMxMJpPToPK0tDQAQPv27Z2Oa9y4sVt1AwCVSiWPQfEGg8EAlUrltfKIiEoTBiBERG66cOECZs+ejaeeegodOnRw6xyffvop/v33X6xduxZarbZYynBFYmIiVqxYgQceeAAAcPPmTXTs2BG//fab0ziTrF3HAMcCfuXKlYMkSYiNjUW9evXw77//5lhOamqqW3WsUaMGzpw5g+7duxc4rzvOnDmDGjVqeKUsIqLShgEIEZEbUlJSMGrUKISGhmLixIlunWP37t1YsmQJxowZk+PYDm+U4YqrV6/CbDbDx8dHbmVI7z6VlpaWb8vDzZs3Ub58eSQnJ6NTp05QKpXZWkXsdjuSkpIwbNgwvP766wWuY8eOHTFv3jyMGDHCI4sk5sVqtSIqKgpvv/12kZZDRFRaMQAhIiogm82GMWPGICYmBhs3bpSnki2Ic+fOYfTo0ejUqROGDh1aLGW46siRIwCQY/ctV7pgXbp0CQ0aNIC/vz+OHTuG2NhY9O3bF7Nnz5bHtEyePBnHjh3DyJEj3apj165dsWDBAnzxxRd44YUX3DqHq1atWgWNRpPvoHciIsoZAxAiogJavnw5/vrrL4wZMwYJCQlISEgA4Jgqt2bNmgCAo0ePolKlSihTpky2/BaLBaNGjYIgCHjuuedw7NgxOa1KlSoICgryShmu+v7771G3bl388MMP8j5Xu2BZrVYcPHgQTz31lLyvTJkymDFjBsaPH4+PP/4Y+/btwx9//IGvv/46xzU8XKFUKjFz5ky8/PLLqFevntMUv560Y8cOLFu2DKtWrXJrsDwRETEAISIqsO3btwMAFi9ejMWLF8v7W7VqhTVr1gAAHnvsMUycODHHdSLOnj2L6OhoAMDgwYOd0mbPno1HH33UK2W44s8//8Sff/6J2bNnO+1P74IlSZK8Ly4uTp4tK92OHTtgNpvRsmVLp/xdu3bFoUOHMGjQIADA2rVrC7U2B+CYAvjtt9/GK6+8grlz56Jnz56FOl9WW7duxcSJEzF9+vRs10NERK4TpMyfHkRERHeZTCY8+uijqFixIj799FOntTmOHDmCgQMHYuvWrahduzZeeOEF7Nq1C6Ghodi4caM8vmPQoEEICAjAvHnzcOPGDVy+fBnHjh3Dzp07cf78eXTu3Blnz57FuXPn0KhRI9StWxdlypRBcHAwHnvsMbdaRH7//Xf4+/t7PEjYu3cv0tLSPLaWCBHR/YoBCBER5So5ORmCIECv1+d5XExMDFJTU1GtWjWnQGX37t3w9fVF1apV8fjjjyM4OBiNGjVC27Zt0aFDBznAuHLlCnbt2oUjR47IM0zNmzevSK+NiIiKBwMQIiIiIiLymqKdq5CIiIiIiCgTBiBEREREROQ1DECIiIiIiMhrGIAQEREREZHXMAAhIiIiIiKvYQBCRERERERewwCEiIiIiIi8hgEIERERERF5DQMQIiIiIiLyGgYgRERERETkNQxAiIiIiIjIaxiAEBERERGR1zAAISIiIiIir2EAQkREREREXsMAhIiIiIiIvIYBCBEREREReQ0DECIiIiIi8hoGIERERERE5DUMQIiI6L6yadMmSJJU3NUgIrpvMQAhIiK3JCYmon79+liyZEmRltOlSxds2rTJI+c6fPgw/vnnHwiCgLfeegthYWGoV68e2rZti9deew2nT5/2SDlERJQ7BiBEROSW3bt3w263Y+fOncVdFZctXrwYY8aMkberV6+Ob775Bm+99RbOnDmDJ598kkEIEVERYwBCRERu2blzJ3x8fHDs2DEkJSUVd3Xy9ccff6BmzZqoVq2avE+j0aBx48Z4+OGHsXr1agCOIIWIiIoOAxAiInLLzp078eyzzwJ
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": []
},
{
"cell_type": "markdown",
"id": "c70c8ca9",
"metadata": {},
"source": [
"### Mark2X"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "2bd90e9e",
"metadata": {},
"outputs": [],
"source": [
"# AngleMarkX1 = TotalData1['M2X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AngleMarkX2 = TotalData2['M2X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AngleMarkX3 = TotalData3['M2X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]\n",
"# AngleMarkX4 = TotalData4['M2X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ad0f74d5",
"metadata": {},
"outputs": [],
"source": [
"# AngleMarkX = pd.concat([AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4],axis=1)\n",
"# RXdescibe = describe_3s(AngleMarkX)\n",
"# RXdescibe"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8d8baa77",
"metadata": {},
"outputs": [],
"source": [
"# for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4]):\n",
"# Data_describe['Mark_Type'] = \"Mark2\"\n",
"# Data_describe['Die_Type'] = i\n",
"# Data_describe['Value_Type'] = \"X\"\n",
"# df = Data_transform(j,Data_describe)\n",
"# print(i,append_dataframe_to_mysql(df,table_name,db_connection))"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "6bfbf06f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "57f94229ae6042cda064230ddf5a1216",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDVUlEQVR4nOzdeXgT1d4H8O/MZGmaNN0oZS07BSqrVJaLIIiCgMgV8KqIgAhUUETgysWLsrnhAuIuXlQQXhcQQRC9uHtVdpRFtlJ2gQJdk7Rpmsm8f6SdNN2bNunC9/M8fdo5s5yTyWlmfjlnzhEURVFAREREREQUAGJ1F4CIiIiIiK4dDECIiIiIiChgGIAQEREREVHAMAAhIiIiIqKAYQBCREREREQBwwCEiIiIiIgChgEIEREREREFDAMQIiIiIiIKGAYgREREREQUMAxAiIiIiIgoYBiAEBFRiT7//HMsWLAALper0sd688038eqrr1ZBqYiIqDZjAEJERMW6evUqlixZgkaNGkEUK3+5UBQFH3zwAbKzs9U0p9MJq9VaJQEOERHVDgxAiIjy/Prrrxg4cGCx69auXYv+/fujQ4cO6Nu3LzZv3lyhY6elpWHmzJno1q0brrvuOowdOxbnz58PeB7l5XQ6MXv2bKSlpeHll19GbGys10+/fv1gsViK3XfLli1Fto+NjcWrr74Km82GLl26qGlxcXG4/vrrcerUKQDAhg0bEBsbi4SEBPV4K1euRGxsLP71r3/59FqKM2DAAGzYsKHKjlfY8ePH0a5dO2zcuFFN++GHHxAbG4s9e/b4LV8iotpAU90FICKqCZKSkjBr1iwEBwcXWbdx40Y8/fTTGD16NLp06YINGzbg8ccfR5s2bdCuXbtyHX/GjBk4efIkpk2bBkmS8NZbb2H69OnqTXAg8igvp9OJuXPn4tKlS/j5558RFhamrjt06BDuu+8+PPvsswgJCSl2f41Gg5CQEPz6668AgFOnTuGdd97Bk08+CaPRqL7eP//8E3PmzIHD4YDZbPY6xrFjx4r9u7Zo27Ytbr75ZqxevRojRowAAKxevRrdu3dH9+7dq7dwRETVjAEIEV3zDhw4gEmTJqFp06ZITU31WifLMl599VXMnj0bEydOBAAMGjQIvXv3xrZt28oVHPz22284cOAANm/ejCZNmgAAjEYj5s2bh3PnzqFRo0Z+z6Np06blOhfJycn45z//iRMnTmD16tUwmUxwOp3q+iVLluD2229Hly5dYLPZAABBQUGQJEndRhRFiKIIQRAAuAOarVu3YvHixdDr9QCAK1euIDExEcHBwdBoil6KLly4gMzMTJjNZhw9erRcZa9pEhISMGrUKOzZswehoaH47bff8J///Ke6i0VEVO0YgBDRNW/37t2YM2cOAOD111/3WicIAl5//XW0bt1aTTMajdDpdMjNzS3X8Tt27Ih169apgQEAhIeHAwByc3MDkkd5yLKM6dOnw2KxQFEUDB06tNjt9u/fj02bNqnLK1asQL9+/by2EQQBH374IV544QU1wOjVq5e63uVyQZZlXHfddXA6nfjkk0/QpUsXAEDjxo3hcDhw7NgxdOnSBSdPnkTnzp3L9Rpqko4dO6JPnz748MMPYTabERcXhxtvvLG6i0VEVO34DAgRXfMmTJiAO++8s9h1oiiiQ4cO0Ol0atrvv/+OzMxMdOvWrVzHDwkJ8QouAODnn39GREQEmjdvHpA8ykOSJLz66qv46KOPYDab8dRTT2H37t3YvXs3vvzySwDApk2b1LTdu3dDkiSvcgPu4EKj0WDcuHE4cuQIPv30UwDAjh07cPDgQRw8eBDTpk1DfHw8/vzzTxw+fBidOnXyOkZsbCyOHTuGpKQkCIKAZs2aea3/4osvMGTIEHTu3BmDBw/Gli1bvNa/9tprGDt2LCwWCxYsWIA+ffpg+/btxb7urKwsjB49GmPGjIHdbi/XuSqvhIQEfPvtt9i0aRMeeuihKj02EVFtxRYQIrrmVXSEp1dffRWtWrUq8q1/eZ07dw4bNmzAI488UmLegcijONHR0QDcQYQkSWrXqvzfGo3Gq7sVUPT82e12aLVateVDlmUA8Br9Kjc3Vx35qvDxAPczFEePHlUDq4Lb7N27F48//jgmTJiAm2++GTt37sScOXPQuXNnr65mubm5GDduHKKiopCQkIAWLVoUySc3NxfTp0+HLMt45513EBQU5LU+PT0dGRkZMBqNqFevXmmnrljx8fFo06YNMjIyShzggIjoWsMAhIioAtatW4fffvsN7777rk9D07pcLsydOxcNGjTA/fffX215lCU7Oxvz58/H/PnzvdJL6pZVUE5OjtdD5fmtCn/729+8tivc6lFQ27Zt8X//938ICQlBbGys17qgoCAsWrQII0eOhCRJaNGiBd566y0cPHjQKwD5/fffcd999+HJJ58sNg9FUTB37lwcPXoUX3zxBUwmU5FtPvzwQ7z++usYMmQIli1bVuZrL+zy5cs4efIkcnNzcerUKbRs2bLCxyAiqmsYgBARldOpU6fw3HPP4Z577kHfvn19Osa7776Lffv2Yc2aNTAYDNWSR3lkZGTgP//5j/rMwqVLl9CvXz989913Xs+ZdOjQoci+FosFUVFRUBQFKSkpaNeuHfbt21dsPtnZ2cWWsW3btkhMTITJZMKNN96I48ePq+vi4uJgt9uxZMkS7Nu3D0ePHoXT6SzSfSo8PBwzZ84s8TWuWLECVqsV6enpuHr1KiIiIko/KT5YuXIlGjduDJPJhHfeeQdLliyp8jyIiGobPgNCRFQOWVlZmD59OmJiYjB37lyfjrF9+3YsX74cM2bMKPbZjkDkUR7nz5+Hw+GATqeDzWaDzWZTu0/Z7XY1LX8UrMIuXbqE+vXrw2Kx4KabbkLfvn3RvXt3DBgwQP256aab0K1bN7z99tvFHqN169ZwOBz47bff0LZtW691a9euxbhx42C32zF27Fh89dVXaNSoUZFjtGnTRh32tzhWqxVr1qzBwIED8fzzzxe7zSOPPIJjx4751PqRmpqKTz/9FBMmTMCECROwZcsWnDt3rsLHISKqa9gCQkRUBlmWMWPGDCQnJ+Ozzz5Th5KtiBMnTuDRRx/FTTfdhEmTJlVLHuV14MABACi2+1Z5umCdOXMGHTp0gNlsxqFDh5CSkoLbb78dzz33nPpMy7x583Do0CFMmzat2GPo9XrExMTg1KlTiI2N9XrIfN26dRgyZAgWLVoEwH2jn56eXtGXiUcffRQtWrTAY489hqFDh+KHH35A//79vbZJTU1FWloaTCaT+nxMeX3wwQcICgrCHXfcAY1Gg5dffhnvvvuuWm4iomsVW0CIiMqwYsUK/PTTT5gwYQLS09PVkZxOnjypbnPw4EGkpKQUu3/+g86CIOD+++/HoUOH1GOkpaUFLI/y2rRpE9q2bYtjx46pPz/99BMA4LvvvvNKL/wAudPpxN69e72GzY2MjMSiRYvw+OOP4/fff8c777yDH374Aa+99lqREbQKatu2LcLDwxEVFeWVHh4ejv3792P79u344osvcO+998Jms6kPu5dX/kPyzZs3x6hRo7BkyRKvOU8Ad2vLkCFDSmwhKUlmZibWrl2LMWPGQK/XQ5IkjBs3Dhs2bEBycnKFjkVEVNcwACEiKsNXX30FAHjllVcwatQo9afgA9qjRo3C5s2bi90/MTERSUlJSE9Px7hx47yO8cMPPwQsj/L48ccf8eOPP2LChAle6fldsBRFUdNSU1PV0bLy/fLLL3A4HEVm+x44cCBGjx6NsWPH4rXXXsMbb7xR5uSIbdu2LdL9CnC3nkRGRuKhhx7Cm2++idGjR+O6667D3r17y/06C3v44YeRnJyMtWvX+nyMglavXo3c3Fzce++9atqoUaMQHByMd999t0ryICKqrQSl4NWEiIiuWTk5ObjzzjvRsGFDvPvuu+pM5oC7W9bo0aPx5ZdfonXr1pgwYQJ+++03xMTE4LPPPlNHvRo7dixCQ0Pxwgsv4OLFizh79iwOHTqEX3/9FSdPnkT//v2RmJiIEydOoGPHjmj
"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,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADDVUlEQVR4nOzdeXgT1d4H8O/MZGmaNN0oZS07BSqrVJaLIIiCgMgV8KqIgAhUUETgysWLsrnhAuIuXlQQXhcQQRC9uHtVdpRFtlJ2gQJdk7Rpmsm8f6SdNN2bNunC9/M8fdo5s5yTyWlmfjlnzhEURVFAREREREQUAGJ1F4CIiIiIiK4dDECIiIiIiChgGIAQEREREVHAMAAhIiIiIqKAYQBCREREREQBwwCEiIiIiIgChgEIEREREREFDAMQIiIiIiIKGAYgREREREQUMAxAiIiIiIgoYBiAEBFRiT7//HMsWLAALper0sd688038eqrr1ZBqYiIqDZjAEJERMW6evUqlixZgkaNGkEUK3+5UBQFH3zwAbKzs9U0p9MJq9VaJQEOERHVDgxAiIjy/Prrrxg4cGCx69auXYv+/fujQ4cO6Nu3LzZv3lyhY6elpWHmzJno1q0brrvuOowdOxbnz58PeB7l5XQ6MXv2bKSlpeHll19GbGys10+/fv1gsViK3XfLli1Fto+NjcWrr74Km82GLl26qGlxcXG4/vrrcerUKQDAhg0bEBsbi4SEBPV4K1euRGxsLP71r3/59FqKM2DAAGzYsKHKjlfY8ePH0a5dO2zcuFFN++GHHxAbG4s9e/b4LV8iotpAU90FICKqCZKSkjBr1iwEBwcXWbdx40Y8/fTTGD16NLp06YINGzbg8ccfR5s2bdCuXbtyHX/GjBk4efIkpk2bBkmS8NZbb2H69OnqTXAg8igvp9OJuXPn4tKlS/j5558RFhamrjt06BDuu+8+PPvsswgJCSl2f41Gg5CQEPz6668AgFOnTuGdd97Bk08+CaPRqL7eP//8E3PmzIHD4YDZbPY6xrFjx4r9u7Zo27Ytbr75ZqxevRojRowAAKxevRrdu3dH9+7dq7dwRETVjAEIEV3zDhw4gEmTJqFp06ZITU31WifLMl599VXMnj0bEydOBAAMGjQIvXv3xrZt28oVHPz22284cOAANm/ejCZNmgAAjEYj5s2bh3PnzqFRo0Z+z6Np06blOhfJycn45z//iRMnTmD16tUwmUxwOp3q+iVLluD2229Hly5dYLPZAABBQUGQJEndRhRFiKIIQRAAuAOarVu3YvHixdDr9QCAK1euIDExEcHBwdBoil6KLly4gMzMTJjNZhw9erRcZa9pEhISMGrUKOzZswehoaH47bff8J///Ke6i0VEVO0YgBDRNW/37t2YM2cOAOD111/3WicIAl5//XW0bt1aTTMajdDpdMjNzS3X8Tt27Ih169apgQEAhIeHAwByc3MDkkd5yLKM6dOnw2KxQFEUDB06tNjt9u/fj02bNqnLK1asQL9+/by2EQQBH374IV544QU1wOjVq5e63uVyQZZlXHfddXA6nfjkk0/QpUsXAEDjxo3hcDhw7NgxdOnSBSdPnkTnzp3L9Rpqko4dO6JPnz748MMPYTabERcXhxtvvLG6i0VEVO34DAgRXfMmTJiAO++8s9h1oiiiQ4cO0Ol0atrvv/+OzMxMdOvWrVzHDwkJ8QouAODnn39GREQEmjdvHpA8ykOSJLz66qv46KOPYDab8dRTT2H37t3YvXs3vvzySwDApk2b1LTdu3dDkiSvcgPu4EKj0WDcuHE4cuQIPv30UwDAjh07cPDgQRw8eBDTpk1DfHw8/vzzTxw+fBidOnXyOkZsbCyOHTuGpKQkCIKAZs2aea3/4osvMGTIEHTu3BmDBw/Gli1bvNa/9tprGDt2LCwWCxYsWIA+ffpg+/btxb7urKwsjB49GmPGjIHdbi/XuSqvhIQEfPvtt9i0aRMeeuihKj02EVFtxRYQIrrmVXSEp1dffRWtWrUq8q1/eZ07dw4bNmzAI488UmLegcijONHR0QDcQYQkSWrXqvzfGo3Gq7sVUPT82e12aLVateVDlmUA8Br9Kjc3Vx35qvDxAPczFEePHlUDq4Lb7N27F48//jgmTJiAm2++GTt37sScOXPQuXNnr65mubm5GDduHKKiopCQkIAWLVoUySc3NxfTp0+HLMt45513EBQU5LU+PT0dGRkZMBqNqFevXmmnrljx8fFo06YNMjIyShzggIjoWsMAhIioAtatW4fffvsN7777rk9D07pcLsydOxcNGjTA/fffX215lCU7Oxvz58/H/PnzvdJL6pZVUE5OjtdD5fmtCn/729+8tivc6lFQ27Zt8X//938ICQlBbGys17qgoCAsWrQII0eOhCRJaNGiBd566y0cPHjQKwD5/fffcd999+HJJ58sNg9FUTB37lwcPXoUX3zxBUwmU5FtPvzwQ7z++usYMmQIli1bVuZrL+zy5cs4efIkcnNzcerUKbRs2bLCxyAiqmsYgBARldOpU6fw3HPP4Z577kHfvn19Osa7776Lffv2Yc2aNTAYDNWSR3lkZGTgP//5j/rMwqVLl9CvXz989913Xs+ZdOjQoci+FosFUVFRUBQFKSkpaNeuHfbt21dsPtnZ2cWWsW3btkhMTITJZMKNN96I48ePq+vi4uJgt9uxZMkS7Nu3D0ePHoXT6SzSfSo8PBwzZ84s8TWuWLECVqsV6enpuHr1KiIiIko/KT5YuXIlGjduDJPJhHfeeQdLliyp8jyIiGobPgNCRFQOWVlZmD59OmJiYjB37lyfjrF9+3YsX74cM2bMKPbZjkDkUR7nz5+Hw+GATqeDzWaDzWZTu0/Z7XY1LX8UrMIuXbqE+vXrw2Kx4KabbkLfvn3RvXt3DBgwQP256aab0K1bN7z99tvFHqN169ZwOBz47bff0LZtW691a9euxbhx42C32zF27Fh89dVXaNSoUZFjtGnTRh32tzhWqxVr1qzBwIED8fzzzxe7zSOPPIJjx4751PqRmpqKTz/9FBMmTMCECROwZcsWnDt3rsLHISKqa9gCQkRUBlmWMWPGDCQnJ+Ozzz5Th5KtiBMnTuDRRx/FTTfdhEmTJlVLHuV14MABACi2+1Z5umCdOXMGHTp0gNlsxqFDh5CSkoLbb78dzz33nPpMy7x583Do0CFMmzat2GPo9XrExMTg1KlTiI2N9XrIfN26dRgyZAgWLVoEwH2jn56eXtGXiUcffRQtWrTAY489hqFDh+KHH35A//79vbZJTU1FWloaTCaT+nxMeX3wwQcICgrCHXfcAY1Gg5dffhnvvvuuWm4iomsVW0CIiMqwYsUK/PTTT5gwYQLS09PVkZxOnjypbnPw4EGkpKQUu3/+g86CIOD+++/HoUOH1GOkpaUFLI/y2rRpE9q2bYtjx46pPz/99BMA4LvvvvNKL/wAudPpxN69e72GzY2MjMSiRYvw+OOP4/fff8c777yDH374Aa+99lqREbQKatu2LcLDwxEVFeWVHh4ejv3792P79u344osvcO+998Jms6kPu5dX/kPyzZs3x6hRo7BkyRKvOU8Ad2vLkCFDSmwhKUlmZibWrl2LMWPGQK/XQ5IkjBs3Dhs2bEBycnKFjkVEVNcwACEiKsNXX30FAHjllVcwatQo9afgA9qjRo3C5s2bi90/MTERSUlJSE9Px7hx47yO8cMPPwQsj/L48ccf8eOPP2LChAle6fldsBRFUdNSU1PV0bLy/fLLL3A4HEVm+x44cCBGjx6NsWPH4rXXXsMbb7xR5uSIbdu2LdL9CnC3nkRGRuKhhx7Cm2++idGjR+O6667D3r17y/06C3v44YeRnJyMtWvX+nyMglavXo3c3Fzce++9atqoUaMQHByMd999t0ryICKqrQSl4NWEiIiuWTk5ObjzzjvRsGFDvPvuu+pM5oC7W9bo0aPx5ZdfonXr1pgwYQJ+++03xMTE4LPPPlNHvRo7dixCQ0Pxwgsv4OLFizh79iw
" </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)\n",
"# ax[0].plot([i+1 for i in range(len(AngleMarkX.columns))],RXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
"# AngleMarkX.boxplot(ax=ax[0])\n",
"# ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\n",
"# for i in range(len(AngleMarkX.columns)):\n",
"# ax[0].annotate(round(RXdescibe.loc['mean'][i],2), \n",
"# xy=(i+1,RXdescibe.loc['mean'][i]),\n",
"# xytext=(i+0.95,RXdescibe.loc['mean'][i]+0.05),\n",
"# color=\"r\")\n",
"# ax[0].legend()\n",
"# ax[0].set_title('mean_X/Day')\n",
"# ax[1].plot([i for i in AngleMarkX.columns],RXdescibe.loc['3sigma'],marker = 'o')\n",
"# ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
"# for i in range(len(AngleMarkX.columns)):\n",
"# ax[1].annotate(round(RXdescibe.loc['3sigma'][i],3), \n",
"# xy=(i,RXdescibe.loc['3sigma'][i]),\n",
"# xytext=(i,RXdescibe.loc['3sigma'][i]),\n",
"# color=\"r\")\n",
"# ax[1].legend() \n",
"# ax[1].set_title('3sigam_X/Day')\n",
"# # ax[2].plot([i for i in AngleMarkX.columns],RXdescibe.loc['range'],marker = 'o')\n",
"# # for i in range(len(AngleMarkX.columns)):\n",
"# # ax[2].annotate(round(RXdescibe.loc['range'][i],3), \n",
"# # xy=(i,RXdescibe.loc['range'][i]),\n",
"# # xytext=(i,RXdescibe.loc['range'][i]),\n",
"# # color=\"r\")\n",
"# # ax[2].set_title('Range_X/Day')\n",
"# plt.suptitle(f'{wafer_name} Mark2X')\n",
"# fig.tight_layout()\n",
"# plt.savefig(f'Wafer/{wafer_name}-Mark2X.jpg',dpi=200)\n",
"# plt.show()"
]
},
{
"cell_type": "markdown",
"id": "fca6defb",
"metadata": {},
"source": [
"### Mark2Y"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5e00cd6d-731a-45a1-ba74-75aaf301e318",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "fbbe6382-0ef5-4064-8c78-7f2132af2f5b",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "8a657ca2-7a8f-4219-b301-6577410189ef",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.9"
},
"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
}