matplotlib绘制带旋转角度的直角三角形显示非直角该如何解决?
直角三角形matplotlib绘制显示异常问题及解决方案
问题场景
我尝试生成一个斜边长度为1、内角为25度、底边相对x轴旋转30度的直角三角形。我自认已经正确输入了三角函数公式,但matplotlib生成的三角形看起来不符合直角三角形特征,最初我怀疑是舍入误差导致的。
对应的代码如下:
import math import matplotlib.pyplot as plt from annotation import label angle_b = math.radians(25) # 直角三角形的25度内角 angle_a = math.radians(30) # 待绘制三角形底边与x轴的夹角为30度 point_A = (0,0) point_B = (math.cos(angle_a + angle_b), math.sin(angle_a + angle_b)) point_C = (math.cos(angle_a) * math.cos(angle_b), math.sin(angle_a) * math.cos(angle_b)) # 标注点 label(plt, 'A', point_A) label(plt, 'B', point_B) label(plt, 'C', point_C) # 绘制三个点连接形成的直角三角形 plt.plot(*zip(point_A, point_B, point_C, point_A), marker='o', color='black')
从运行输出的结果可以看到,角ACB并不符合三角学原理预测的直角。有评论指出ABC看起来是直角,而我实际希望让ACB为直角,和几何推导正弦和角公式的标准构造示例一致。
后续我补充了和angle_a相关的直角三角形绘制代码:
point_D = (math.cos(angle_a) * math.cos(angle_b), 0) plt.plot(*zip(point_A, point_C, point_D, point_A), marker='o', color='black') label(plt, 'D', point_D)
补充后的绘制结果仍显示角度异常。
解决方案
该问题实际由matplotlib默认的坐标轴不等比缩放导致,只需添加ax.set_aspect('equal')代码行,将坐标轴的显示比例设为等比,即可得到符合预期的直角三角形效果。
内容的提问来源于stack exchange,提问作者Ben G
相关产品推荐
相关产品推荐

