columns = [ 'WAFER_TYPE', 'LOTNO', 'T_WAFER_ID', 'WAFER_NO', 'MEASURE_TIME', 'PARAMETER_MAPPING', 'RANGE_INDEX' , 'SITE_COUNT', 'AVERAGE','MAX_VAL','MIN_VAL', 'STD_DEV', 'SITE1_VAL', 'SITE2_VAL', 'SITE3_VAL', 'SITE4_VAL', 'SITE5_VAL', 'SITE6_VAL','SITE7_VAL', 'SITE8_VAL', 'SITE9_VAL', 'SITE10_VAL', 'SITE11_VAL', 'SITE12_VAL', 'SITE13_VAL', 'SITE14_VAL', 'SITE15_VAL', 'SITE16_VAL', 'SITE17_VAL', 'SITE18_VAL', 'SITE19_VAL', 'SITE20_VAL', 'SITE21_VAL', 'SITE22_VAL', 'SITE23_VAL', 'SITE24_VAL', 'SITE25_VAL' ] 对每一个PARAMETER_MAPPING画一个图,该图中横坐标为LOTNO以及对应的waferNO,纵坐标为'SITE1_VAL'到 'SITE25_VAL'的值,画一个box图,如果WAFER_TYPE为DRB_WAFER,则box图的颜色为绿色,如果WAFER_TYPE为NONE_DRB_WAFER,则box图的颜色为黄色,并且横坐标从左到右的顺序按照MEASURE_TIME升序排列
时间: 2025-04-12 14:37:01 浏览: 33
<think>好的,我现在需要解决用户提出的问题,即根据给定的columns列表,针对每个PARAMETER_MAPPING绘制箱线图,要求横轴为LOTNO和对应的WaferNO,纵轴是SITE1_VAL到SITE25_VAL的值,并且根据WAFER_TYPE决定箱体颜色,同时横坐标按MEASURE_TIME升序排列。首先,我需要理解用户的需求和数据结构的细节。
首先,我需要明确数据中的各个字段含义。例如,WAFER_TYPE有DRB_WAFER和NONE_DRB_WAFER两种类型,这将决定箱线图的颜色。PARAMETER_MAPPING应该是不同的参数类别,每个参数需要单独绘制一张图。LOTNO和WAFER_NO组合成横坐标的标签,可能需要将两者合并成一个字符串,如“LOT123-Wafer01”。MEASURE_TIME用于确定排序,确保横坐标按时间升序排列。
接下来,我需要考虑数据预处理的步骤。首先,确保数据集中包含所有必要的列,特别是MEASURE_TIME、WAFER_TYPE、LOTNO、WAFER_NO、PARAMETER_MAPPING以及SITE1_VAL到SITE25_VAL的数值。然后,对于每个PARAMETER_MAPPING,需要筛选出对应的数据行,并按MEASURE_TIME排序,以保证横坐标的顺序正确。
在数据整理时,可能需要将每个SITE_X_VAL的值堆叠(melt)成一列,以便在箱线图中展示所有站点的数据。例如,将SITE1到SITE25的值转换为长格式,每一行代表一个站点的值,并关联对应的LOTNO、WAFER_NO等信息。
颜色映射方面,需要根据WAFER_TYPE动态设置颜色,DRB_WAFER为绿色,NONE_DRB_WAFER为黄色。这可能在绘图时通过条件判断或使用颜色映射字典来实现。
关于绘图工具的选择,Python的Matplotlib和Seaborn库是常用的工具。使用Seaborn的boxplot函数可以方便地绘制箱线图,同时配合Pandas进行数据处理。需要确保每个箱体的位置对应正确的LOTNO和WaferNO组合,并按MEASURE_TIME排序后的顺序排列。
可能的挑战包括处理大量数据时的性能问题,以及确保横坐标标签的清晰可读。如果LOTNO和WaferNO的组合过多,横坐标标签可能会过于拥挤,可能需要旋转标签或调整图表大小。
另外,用户可能需要每个PARAMETER_MAPPING生成一个独立的图表,这需要通过循环遍历每个参数,分别进行数据处理和绘图。在循环中,每次筛选当前参数的数据,生成对应的图表,并保存或显示。
需要注意的细节还有,MEASURE_TIME的格式是否为日期时间类型,如果不是,需要先转换,以确保排序正确。此外,检查数据中是否存在缺失值,尤其是SITE_VAL的数值,这可能会影响箱线图的绘制。
最后,测试代码的步骤也很重要。可以先用少量数据验证逻辑是否正确,颜色是否正确应用,横坐标是否按时间排序,然后逐步扩展到全部数据和参数。</think>以下是分步实现该数据可视化需求的说明:
一、数据预处理
1. 数据排序:
$$data\_sorted = data.sort\_values(by='MEASURE\_TIME')$$
2. 生成复合坐标轴标签:
$$data\_sorted['LOT\_WAFER'] = data\_sorted['LOTNO'] + '-' + data\_sorted['WAFER\_NO'].astype(str)$$
3. 数据重塑(以长格式存储站点值):
```python
site_columns = [f'SITE{i}_VAL' for i in range(1,26)]
melted_data = data_sorted.melt(
id_vars=['PARAMETER_MAPPING', 'LOT_WAFER', 'WAFER_TYPE'],
value_vars=site_columns,
var_name='SITE',
value_name='VALUE'
)
```
二、可视化实现(Python示例)
```python
import matplotlib.pyplot as plt
import seaborn as sns
def plot_parameter(param):
# 筛选特定参数数据
param_data = melted_data[melted_data['PARAMETER_MAPPING'] == param]
# 创建画布
plt.figure(figsize=(20, 8))
# 创建颜色映射字典
color_map = {
'DRB_WAFER': '#00FF00',
'NONE_DRB_WAFER': '#FFFF00'
}
# 绘制箱线图
boxplot = sns.boxplot(
x='LOT_WAFER',
y='VALUE',
hue='WAFER_TYPE',
data=param_data,
palette=color_map,
order=data_sorted['LOT_WAFER'].unique() # 确保排序正确
)
# 设置图表属性
plt.title(f'{param} - Site Value Distribution')
plt.xticks(rotation=90)
plt.xlabel('Lot-Wafer Combination')
plt.ylabel('Measurement Value')
# 显示图表
plt.tight_layout()
plt.show()
# 遍历所有参数生成图表
for parameter in data['PARAMETER_MAPPING'].unique():
plot_parameter(parameter)
```
三、关键技术要点
1. 坐标轴处理:
- 使用$LOTNO + WAFER\_NO$的组合作为唯一标识
- 通过$order$参数确保按测量时间排序
2. 颜色映射逻辑:
$$color = \begin{cases}
\#00FF00 & \text{if } WAFER\_TYPE = DRB\_WAFER \\
\#FFFF00 & \text{otherwise}
\end{cases}$$
3. 统计图形特性:
- 每个箱体展示25个站点的:$min(Q1-1.5IQR),\ Q1,\ median,\ Q3,\ max(Q3+1.5IQR)$
- 异常值自动显示为离散点
四、优化建议
1. 交互式可视化:考虑使用Plotly库实现可交互的箱线图,支持:
- 鼠标悬停查看统计值
- 坐标轴缩放
- 动态筛选参数
2. 性能优化:
- 对大数据集使用dask进行并行处理
- 采用数据采样策略:
$$sampling\_rate = \frac{target\_data\_size}{original\_data\_size}$$
3. 异常值标注:添加自动异常检测标注
$$outlier = \begin{cases}
1 & \text{if } value < Q1 - 1.5IQR \\
1 & \text{if } value > Q3 + 1.5IQR \\
0 & \text{otherwise}
\end{cases}$$
五、典型应用场景
1. 工艺监控:通过$AVERAGE$和$STD\_DEV$的跨批次对比检测工艺偏移
2. 设备健康度分析:结合$MAX\_VAL$和$MIN\_VAL$分析站点间差异
3. 质量控制:基于$RANGE\_INDEX$参数定位异常晶圆
建议在实施时先使用小样本数据验证可视化效果,再扩展到全量数据。如果遇到横坐标标签重叠问题,可以尝试:
1. 调整figsize参数
2. 使用日期聚合(如按周/月分组)
3. 添加交互式缩放功能
阅读全文
相关推荐










