如何在CIE a-b二维散点图中绘制60度分割线
在CIELAB a-b散点图中添加60度分隔线
实现思路
60度直线的斜率为tan(60°)=√3≈1.732,要让线条覆盖整个图表可视范围,只需根据当前a轴的取值区间,计算对应b轴的端点值,再绘制直线即可。
Matplotlib代码示例(基于现有代码扩展)
假设你已经完成了RGB转CIELAB及散点图绘制,添加以下代码即可生成目标线条:
import numpy as np import matplotlib.pyplot as plt # (你的现有代码:RGB转CIELAB,提取a、b通道数据) # plt.scatter(a, b, ...) # 已有的散点图绘制代码 # 计算60度直线的坐标点 a_left, a_right = plt.xlim() # 获取当前a轴的显示范围 slope = np.tan(np.deg2rad(60)) # 转换弧度后计算准确斜率 b_bottom = slope * a_left b_top = slope * a_right # 绘制绿色60度分隔线 plt.plot([a_left, a_right], [b_bottom, b_top], color="#2ecc71", linewidth=2, label="60° Separator") # (你的现有图表设置:坐标轴标签、图例等) plt.xlabel("a* Channel") plt.ylabel("b* Channel") plt.legend() plt.show()
关键细节
- 用
np.deg2rad(60)计算弧度后求正切,比手动输入1.732更精准 - 通过
plt.xlim()获取当前a轴的实际显示区间,确保线条贯穿整个图表 - 可调整
color参数匹配参考图的绿色,linewidth调整线条粗细
如果使用Seaborn、Plotly等其他库,核心逻辑完全一致:先确定直线的两个端点(基于a轴范围和60度斜率),再添加线条图层即可。
内容的提问来源于stack exchange,提问作者KEZIA ANGELINE
相关产品推荐
相关产品推荐

