You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:15:02