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

如何解决时间序列折线图回归线斜率计算值与视觉角度不符问题

问题根因

你计算的7.3度是数据空间的数学角度,视觉上看到的接近45度是画布像素空间的显示角度,二者的坐标轴缩放比例不一致,导致结果差异。

  • 你代码里的角度计算逻辑本身没有错误:x轴差值单位是「天」,y轴差值单位是「股价(美元)」,2019-01到2021-01间隔约730天,股价差值约90美元,arctan2(90,730)换算角度确实约为7.3度。
  • 图表显示时的坐标轴缩放比例非对等:你设置的画布尺寸为figsize=(15,6),x轴总数据跨度为6年≈2190天,y轴总数据跨度约为120美元,每单位数据对应的像素长度完全不对等,数据映射到像素后线段被纵向拉伸,因此视觉角度接近45度。

计算视觉角度的解决方案

如果需要得到和视觉观感一致的角度,需要先将数据坐标转换为画布的像素坐标后再计算,代码示例如下:

# 在plt.show()前添加以下代码
# 将数据坐标转换为像素坐标
point1 = ax1.transData.transform((x1, y1))
point2 = ax1.transData.transform((x2, y2))
# 基于像素坐标差值计算视觉角度
visual_angle = round(np.rad2deg(np.arctan2(point2[1] - point1[1], point2[0] - point1[0])), 1)
print(f"线段视觉角度为{visual_angle}度")

运行后得到的结果就和你图中观察到的接近45度的结果一致。
如果需要让数据空间角度和视觉角度完全匹配,可以调用ax1.set_aspect('equal')设置坐标轴等比例缩放,但时间序列场景下该设置会导致图表宽度过大,实用性较低。

内容的提问来源于stack exchange,提问作者Raj Nair

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:45:01