PCA准备阶段向量投影逻辑正确但可视化垂线不垂直问题排查
问题分析与解决
嘿,这个问题挺有意思的——你的投影计算逻辑完全正确,问题出在Matplotlib的坐标轴比例没有统一上!
为什么会出现视觉错觉?
默认情况下,Matplotlib会根据数据范围自动调整x轴和y轴的刻度比例,这就导致了坐标轴的单位长度在视觉上不一致。你定义的向量v = [1, 0.5]对应的直线斜率是0.5,但因为轴比例不对,这条直线在图上看起来的斜率和实际数值不符,红色的投影垂线自然就显得不垂直了。而你的数值验证(点积趋近于0)是基于数学计算的,和可视化的轴比例无关,所以计算逻辑没问题。
解决方法
只需要在绘图代码中添加一行,强制让x轴和y轴的单位长度保持一致:
ax0.set_aspect('equal')
把这行代码放在ax0.set_ylim(...)之后即可。修改后,你就能看到红色虚线确实垂直于黑色的投影直线了,视觉效果和数学逻辑就一致了。
补充说明
你也可以用ax0.axis('equal')来达到同样的效果,两者功能几乎一致,set_aspect('equal')更明确地指定了轴比例的一致性。
内容的提问来源于stack exchange,提问作者2Obe
相关产品推荐
相关产品推荐

