调整Plotly图形对象优化硅片蚀刻深度热图
硅片蚀刻深度热图优化方案
针对你提出的三个问题,直接给出可行的解决方案——改用plotly.graph_objects.Scatter替代Heatmap来实现自定义标记,从根源解决形状和空白问题:
1. 将数据方块改为正方形/填充圆形
Heatmap的单元格形状依赖坐标轴刻度分布,无法直接改为严格正形或圆形。改用散点标记模式,通过marker.symbol参数自定义形状:
- 正方形:设置
symbol='square' - 填充圆形:设置
symbol='circle'
2. 坐标轴上的细长数据点转为正方形
使用散点标记后,所有数据点统一采用相同形状和大小,不会出现因坐标轴刻度导致的细长矩形,彻底解决边缘点变形问题。
3. 消除空白区域且不损失数据
Heatmap的xgap/ygap会导致重叠或空白,改用散点标记后,通过调整marker.size控制标记大小,让点紧密排列但不重叠,同时绑定坐标轴比例确保标记不变形,完全保留所有数据。
修改后的完整代码
import csv import plotly.graph_objects as go # 读取CSV数据 with open('MyCSV.csv', 'r') as f: reader = csv.DictReader(f) coords = [(float(row['X(mm)']), float(row['Y(mm)']), float(row['Delta Thick (nm)'])) for row in reader] x, y, z = zip(*coords) # 用散点标记替代热图,自定义形状和颜色 fig = go.Figure(data=go.Scatter( x=x, y=y, mode='markers', marker=dict( symbol='square', # 切换为'circle'即可显示填充圆形 size=12, # 调整大小实现紧密排列(根据实际数据密度微调) color=z, colorscale=[[0, 'rgb(255, 0, 0)'], [0.5, 'rgb(255, 255, 0)'], [1, 'rgb(0, 255, 0)']], showscale=True # 显示颜色刻度条 ) )) # 设置坐标轴等比例,确保标记为正形 fig.update_layout( width=800, height=800, xaxis=dict( range=[-80, 80], scaleanchor="y", # 绑定x轴比例到y轴 scaleratio=1 # 强制x/y轴1:1比例 ), yaxis=dict( range=[-80, 80] ) ) # 添加晶圆轮廓圆 fig.add_shape( type='circle', xref='x', yref='y', x0=-75, y0=-75, x1=75, y1=75, fillcolor='rgba(0,0,0,0)', line_color='black', line_width=2 ) fig.show()
关键说明
- 散点标记完全摆脱了
Heatmap的单元格布局限制,所有标记形状、大小统一可控 scaleanchor和scaleratio确保坐标轴等比例,避免标记被拉伸变形- 调整
size参数可精准控制标记间距,无需依赖xgap/ygap导致的数据重叠或丢失
内容的提问来源于stack exchange,提问作者Mark so Fine
相关产品推荐
相关产品推荐

